Due kepada sebab -sebab khas beberapa waktu yang lalu, wawancara kami terganggu berturut -turut. digabungkan dengan maklum balas beliau, Hari ini kita meneruskan siri temu bual SpringCloud.
Mengalu-alukan semua orang untuk mengikuti saya:
Berikut ialah rajah hubungan komponen teras Spring Cloud:
komponen teras:Tanpa berlengah lagi, mari kita mulakan siri Spring Cloud secara langsung.
Pemula aplikasi penstriman awan musim bunga ialah aplikasi penyepaduan Spring berdasarkan Boot Spring yang menyediakan penyepaduan dengan sistem luaran. Spring Cloud Task, rangka kerja perkhidmatan mikro jangka pendek untuk membina aplikasi dengan pantas yang melaksanakan pemprosesan data terhad.
Seni bina perkhidmatan mikro ialah corak seni bina atau gaya seni bina Ia menyokong pembahagian satu aplikasi kepada satu set perkhidmatan kecil Setiap perkhidmatan berjalan dalam proses tersendiri Antara perkhidmatan dan bekerjasama antara satu sama lain nilai. Perkhidmatan menggunakan mekanisme komunikasi ringan untuk berkomunikasi antara satu sama lain (biasanya RESTful API berdasarkan HTTP Setiap perkhidmatan dibina di sekitar perniagaan tertentu dan boleh dibina secara bebas dalam persekitaran pengeluaran, persekitaran seperti pengeluaran, dsb. Di samping itu, mekanisme pengurusan perkhidmatan yang bersatu dan berpusat harus dielakkan Untuk perkhidmatan tertentu, bahasa dan alat yang sesuai harus dipilih mengikut konteks perniagaan untuk membinanya. Untuk menyelaraskan perkhidmatan ini , bahasa yang berbeza boleh digunakan untuk menulis perkhidmatan, dan stor data yang berbeza boleh digunakan.
Dalam istilah orang awam:
Perkhidmatan mikro ialah aplikasi perkhidmatan bebas dengan satu tanggungjawab. Dalam alat idea intellij, terdapat modul bebas yang dibangunkan menggunakan maven Secara khusus, ia adalah modul kecil yang dibangunkan menggunakan springboot untuk mengendalikan satu logik perniagaan profesional Setiap modul hanya melakukan satu perkara.
Perkhidmatan mikro menekankan saiz perkhidmatan, memfokuskan pada titik tertentu, secara khusus menyelesaikan masalah tertentu/melaksanakan aplikasi perkhidmatan yang sepadan, yang boleh dianggap sebagai modul dalam idea.
Apabila menggunakan Spring Boot untuk membangunkan perkhidmatan mikro yang diedarkan, kami menghadapi masalah berikut
.Komunikasi segerak: dobbo menggunakan panggilan prosedur jauh RPC, springcloud menggunakan antara muka REST panggilan json, dsb.
Asynchronous: baris gilir mesej, seperti: RabbitMq
、ActiveM
、Kafka
dan baris gilir mesej lain.
Mekanisme pemutus litar ialah mekanisme perlindungan pautan perkhidmatan mikro untuk menangani kesan longsor. Apabila perkhidmatan mikro tertentu tidak tersedia atau masa tindak balas terlalu lama, perkhidmatan akan direndahkan, dengan itu mengganggu panggilan perkhidmatan mikro pada nod dan dengan cepat mengembalikan maklumat tindak balas "ralat". Apabila dikesan bahawa respons panggilan perkhidmatan mikro nod adalah normal, pautan panggilan dipulihkan. Dalam rangka kerja Spring Cloud, mekanisme pemutus litar dilaksanakan melalui Hystrix akan memantau status panggilan antara perkhidmatan mikro Apabila panggilan gagal mencapai ambang tertentu, lalai ialah 20 panggilan dalam masa 5 saat akan diaktifkan.
Penurunan taraf perkhidmatan biasanya dipertimbangkan daripada beban keseluruhan. Iaitu, apabila perkhidmatan diputuskan sambungan, pelayan tidak lagi akan dipanggil Pada masa ini, pelanggan boleh menyediakan panggilan balik sandaran setempat dan mengembalikan nilai lalai. Dengan cara ini, walaupun tahapnya dikurangkan, ia masih boleh digunakan, yang lebih baik daripada mati secara langsung.
Hystrix
相关注解@EnableHystrix
:开启熔断 @HystrixCommand(fallbackMethod=”XXX”)
,声明一个失败回滚处理函数XXX
,当被注解的方法执行超时(默认是1000毫秒),就会执行fallback
Fungsi, mengembalikan mesej ralat.
Zookeeper menjamin CP dan Eureka menjamin AP.
J: Ketersediaan tinggi
C: Konsistensi
P: Toleransi kerosakan partition
1 Apabila menanyakan pusat pendaftaran untuk senarai perkhidmatan, kami boleh bertolak ansur dengan pusat pendaftaran yang mengembalikan maklumat dari beberapa minit yang lalu, tetapi kami. tidak boleh Bertolak ansur dengan terus turun dan tidak tersedia. Dalam erti kata lain, fungsi pendaftaran perkhidmatan mempunyai keperluan yang agak tinggi untuk ketersediaan yang tinggi, tetapi akan ada situasi dalam ZooKeeper Apabila nod induk terputus hubungan dengan nod lain kerana kegagalan rangkaian, nod yang tinggal akan memilih semula ketua. Masalahnya ialah masa pemilihan pemimpin terlalu lama, 30 ~ 120s, dan kluster zk tidak tersedia semasa tempoh pemilihan, yang akan menyebabkan perkhidmatan pendaftaran lumpuh semasa tempoh pemilihan. Dalam persekitaran penggunaan awan, besar kemungkinan gugusan zk akan kehilangan nod induk disebabkan masalah rangkaian Walaupun perkhidmatan boleh dipulihkan, ketidaktersediaan pendaftaran jangka panjang yang disebabkan oleh masa pemilihan yang panjang adalah tidak boleh diterima.
2. Eureka menjamin ketersediaan Setiap nod Eureka adalah sama. Jika kegagalan sambungan berlaku apabila pelanggan Eureka mendaftar atau menemui Eureka tertentu, ia akan bertukar secara automatik ke nod lain Selagi satu Eureka masih ada, perkhidmatan pendaftaran boleh dijamin tersedia, tetapi maklumat yang ditemui mungkin tidak. yang terbaru. Di samping itu, Eureka juga mempunyai mekanisme perlindungan diri Jika lebih daripada 85% daripada nod tidak mempunyai degupan jantung yang normal dalam masa 15 minit, maka Eureka akan berfikir bahawa kegagalan rangkaian telah berlaku antara pelanggan dan pusat pendaftaran , situasi berikut akan berlaku:
① Eureka tidak lagi akan mengeluarkan perkhidmatan yang sepatutnya tamat tempoh kerana mereka sudah lama tidak menerima degupan jantung daripada senarai pendaftaran.
② Eureka masih boleh menerima pendaftaran dan permintaan pertanyaan untuk perkhidmatan baharu, tetapi ia tidak akan disegerakkan ke nod lain (iaitu, memastikan nod semasa masih tersedia)
.③ Apabila rangkaian stabil, maklumat pendaftaran baharu bagi tika semasa akan disegerakkan ke nod lain.
Oleh itu, Eureka boleh mengatasi situasi di mana sesetengah nod terputus hubungan kerana kegagalan rangkaian, dan tidak akan melumpuhkan keseluruhan perkhidmatan mikro seperti Zookeeper
SpringBoot memfokuskan pada membangunkan perkhidmatan mikro individu individu dengan cepat dan mudah.
SpringCloud ialah rangka kerja penyelarasan dan tadbir urus perkhidmatan mikro yang memfokuskan pada situasi keseluruhan dan mengurus perkhidmatan mikro individu yang dibangunkan oleh SpringBoot
Menyediakan pengurusan konfigurasi, penemuan perkhidmatan, pemutus litar, dan penghalaan untuk setiap mikroperkhidmatan. bas acara, kunci global, pemilihan keputusan, sesi teragih dan perkhidmatan bersepadu yang lain
SpringBoot boleh digunakan secara bebas tanpa SpringCloud untuk projek pembangunan, tetapi SpringCloud tidak boleh dipisahkan daripada SpringBoot dan merupakan hubungan pergantungan.
SpringBoot memfokuskan pada pantas, Membangunkan dengan mudah perkhidmatan mikro individu, SpringCloud memfokuskan pada rangka kerja tadbir urus perkhidmatan global.
Dalam pengkomputeran, pengimbangan beban meningkatkan pengagihan beban kerja merentas berbilang sumber pengkomputeran seperti komputer, kelompok komputer, pautan rangkaian, unit pemprosesan pusat atau pemacu cakera. Pengimbangan beban bertujuan untuk mengoptimumkan penggunaan sumber, memaksimumkan daya pemprosesan, meminimumkan masa tindak balas dan mengelakkan beban berlebihan mana-mana sumber tunggal. Menggunakan berbilang komponen untuk pengimbangan beban dan bukannya satu komponen boleh meningkatkan kebolehpercayaan dan ketersediaan melalui lebihan. Pengimbangan beban biasanya melibatkan perisian atau perkakasan khusus, seperti suis berbilang lapisan atau proses pelayan Sistem Nama Domain.
Hystrix ialah perpustakaan kependaman dan toleransi kesalahan yang direka untuk mengasingkan titik akses kepada sistem jauh, perkhidmatan dan perpustakaan pihak ketiga, menghentikan kegagalan berlatarkan apabila kegagalan tidak dapat dielakkan dan melaksanakan dalam keanjalan sistem teragih yang kompleks.
Biasanya untuk sistem yang dibangunkan menggunakan seni bina perkhidmatan mikro, banyak perkhidmatan mikro terlibat. Perkhidmatan mikro ini bekerjasama antara satu sama lain.
Fikirkan tentang perkhidmatan mikro berikut
Katakan jika perkhidmatan mikro 9 dalam gambar di atas gagal, maka menggunakan kaedah tradisional kami akan menyebarkan pengecualian. Tetapi ini masih menyebabkan keseluruhan sistem ranap.
Apabila bilangan perkhidmatan mikro bertambah, masalah ini menjadi lebih kompleks. Bilangan perkhidmatan mikro boleh setinggi 1000. Di sinilah hystrix masuk. Kami akan menggunakan ciri kaedah Fallback Hystrix dalam kes ini. Kami mempunyai dua perkhidmatan pekerja-pengguna yang menggunakan perkhidmatan yang didedahkan oleh pekerja-pengguna.
Rajah yang dipermudahkan ditunjukkan di bawah
Sekarang anggapkan atas sebab tertentu, perkhidmatan yang didedahkan oleh pengeluar pekerja memberikan pengecualian. Kami telah menentukan kaedah sandaran menggunakan Hystrix dalam kes ini. Kaedah sandaran ini harus mempunyai jenis pulangan yang sama seperti perkhidmatan awam. Jika pengecualian berlaku dalam perkhidmatan terdedah, kaedah sandaran akan mengembalikan beberapa nilai.
Atas sebab tertentu, perkhidmatan awam pekerja-pengguna memberikan pengecualian. Menggunakan Hystrix dalam kes ini, kami mentakrifkan kaedah sandaran. Jika pengecualian berlaku dalam perkhidmatan terdedah, kaedah sandaran mengembalikan beberapa nilai lalai.
Jika pengecualian dalam kaedah firstPage() terus berlaku, litar Hystrix akan putus dan pengguna pekerja akan melangkau kaedah firstPage bersama-sama dan memanggil kaedah sandaran secara terus. Tujuan pemutus litar adalah untuk memberi masa untuk kaedah halaman pertama atau kaedah lain yang mungkin dipanggil oleh kaedah halaman pertama dan menyebabkan pemulihan pengecualian. Apa yang mungkin berlaku ialah di bawah beban yang lebih ringan, masalah yang menyebabkan pengecualian mempunyai peluang pemulihan yang lebih baik.
Pertama sekali, terdapat modul yang mengendalikan sambungan rangkaian dan mesej, yang bertanggungjawab untuk komunikasi rangkaian penularan. Kedua, modul pengekodan dan penyahkodan diperlukan, kerana komunikasi rangkaian semuanya adalah kod bait yang dihantar, dan objek yang kami gunakan perlu bersiri dan dinyahsiri. Selebihnya ialah bahagian klien dan pelayan Pelayan mendedahkan antara muka perkhidmatan untuk dibuka keputusan yang akan dikembalikan.
Apabila nod Pelayan Eureka kehilangan sambungan kepada terlalu banyak kejadian dalam tempoh yang singkat (seperti kegagalan rangkaian atau pemulaan dan penutupan pelanggan yang kerap) nod akan memasuki mod perlindungan diri , melindungi maklumat pendaftaran, tidak lagi memadamkan data pendaftaran, dan secara automatik keluar dari mod perlindungan diri apabila pemulihan kerosakan berlaku.
ribbon ialah klien pengimbangan beban yang boleh mengawal beberapa gelagat http dan tcp dengan baik. pura-pura menyepadukan reben
secara lalai. feign默认集成了ribbon
。
Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 启发的 java 客户端联编程序。
Feign 的第一个目标是将约束分母的复杂性统一到 http apis,而不考虑其稳定性。
特点:
使用方式
@EnableFeignClients
@FeignClient(name=“xxx”)
@EnableFeignClients
🎜🎜@FeignClient(name="xxx")
Nyatakan perkhidmatan yang hendak dihubungi 🎜🎜🎜🎜🎜🎜15. Apakah perbezaan antara Ribbon dan Berpura-pura? 🎜🎜🎜🎜1. Ribbon memanggil perkhidmatan lain, tetapi dengan cara yang berbeza. 2. Anotasi kelas permulaan adalah berbeza. Ribbon ialah @RibbonClient dan berpura-pura ialah @EnableFeignClients.
3. Lokasi perkhidmatan yang ditentukan adalah berbeza diisytiharkan pada anotasi @RibbonClient, manakala Feign diisytiharkan menggunakan @FeignClient dalam antara muka yang mentakrifkan kaedah abstrak. 4. Kaedah panggilan adalah berbeza Ribbon perlu membina permintaan http dengan sendirinya dan mensimulasikan permintaan http. 🎜Spring Boot ialah penyelesaian berasaskan Maven yang dilancarkan oleh Spring untuk menyelesaikan masalah fail konfigurasi rangka kerja tradisional yang berlebihan dan komponen pemasangan yang rumit, bertujuan. untuk membina perkhidmatan mikro Tunggal dengan cepat Spring Cloud memfokuskan pada menyelesaikan penyelarasan dan konfigurasi antara pelbagai perkhidmatan mikro, komunikasi antara perkhidmatan, pemutus litar, pengimbangan beban, dsb. Dimensi teknikal tidak sama, dan Spring Cloud bergantung pada Spring Boot, tetapi Spring Boot tidak bergantung pada Spring Cloud, malah boleh melakukan pembangunan bersepadu yang sangat baik dengan Dubbo
Summary
ialah apa yang sering kami panggil pendaftaran dan penemuan perkhidmatan Anda boleh mengakses perkhidmatan lain secara terus melalui panggilan prosedur jauh.
Kelebihan: Mudah dan biasa, kerana tiada proksi middleware, sistem lebih ringkas
Kelemahan: Ia hanya menyokong mod permintaan/tindak balas, dan tidak menyokong yang lain, seperti pemberitahuan, permintaan/tindak balas tak segerak, terbitkan/langgan, Terbitkan/tindak balas tak segerak mengurangkan ketersediaan kerana kedua-dua pelanggan dan pelayan mesti tersedia semasa permintaan.
Gunakan mesej tak segerak untuk komunikasi antara perkhidmatan. Perkhidmatan berkomunikasi dengan bertukar-tukar mesej melalui paip mesej.
Kelebihan: Asingkan klien dan pelayan, gandingan lebih longgar, dan tingkatkan kebolehgunaan, kerana perisian tengah mesej menyimpan cache mesej sehingga pengguna boleh menggunakannya, dan menyokong banyak mekanisme komunikasi seperti pemberitahuan, permintaan/tindak balas tak segerak, keluaran/ Langgan , terbitkan/tindak balas tak segerak.
Kelemahan: Perisian tengah mesej mempunyai kerumitan tambahan.
Apabila perkhidmatan dikeluarkan, nyatakan nama perkhidmatan yang sepadan dan daftarkan perkhidmatan ke pusat pendaftaran (Eureka, Zookeeper)
. Eureka 、Zookeeper)
。
注册中心加@EnableEurekaServer
,服务用@EnableDiscoveryClient
@EnableEurekaServer
, service Gunakan @EnableDiscoveryClient
, kemudian gunakan reben atau berpura-pura Lakukan penemuan panggilan perkhidmatan langsung. Soalan ni lebih praktikal terpulang kalau korang dah hafal soalan temuduga. Apabila nod Pelayan Eureka kehilangan sambungan kepada terlalu banyak kejadian dalam tempoh yang singkat (seperti kegagalan rangkaian atau permulaan dan penutupan pelanggan yang kerap) nod akan memasuki mod perlindungan diri untuk melindungi maklumat pendaftaran, tidak lagi memadam data pendaftaran, dan pulih daripada kegagalan secara automatik keluar daripada mod perlindungan diri.
bas awan musim bunga menghubungkan nod teragih dengan broker mesej ringan Ia boleh digunakan untuk menyiarkan perubahan fail konfigurasi atau komunikasi perkhidmatan langsung pemantauan. Jika fail konfigurasi diubah suai dan permintaan dihantar, semua pelanggan akan membaca semula fail konfigurasi.
Apabila perkhidmatan memanggil perkhidmatan lain dan terdapat masalah atas sebab rangkaian atau sebabnya sendiri, pemanggil akan menunggu maklum balas daripada penerima lebih banyak perkhidmatan Meminta sumber ini menyebabkan lebih banyak permintaan menunggu, menyebabkan kesan rantaian (kesan longsor). Jika ia tidak boleh dipanggil beberapa kali dalam tempoh masa dan tiada tanda pemulihan selepas beberapa pemantauan, maka pemutus litar dibuka sepenuhnya dan perkhidmatan tidak akan diminta pada masa akan datang.
Separuh terbuka: Terdapat tanda-tanda pemulihan dalam tempoh yang singkat Pemutus litar akan menghantar beberapa permintaan kepada perkhidmatan Apabila dipanggil seperti biasa, pemutus litar ditutup. Ditutup: Apabila perkhidmatan sentiasa dalam keadaan biasa dan boleh dipanggil secara normal.
Dalam sistem yang diedarkan, disebabkan bilangan perkhidmatan yang besar, untuk memudahkan pengurusan bersatu dan kemas kini fail konfigurasi perkhidmatan, pusat konfigurasi yang diedarkan. komponen diperlukan. Dalam Spring Cloud, terdapat komponen pusat konfigurasi yang diedarkanSpring Cloud Config
, yang menyokong perkhidmatan konfigurasi untuk diletakkan dalam memori perkhidmatan konfigurasi (iaitu, setempat), dan juga menyokong untuk diletakkan dalam repositori Git jauh. Spring Cloud Config
,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。
在Spring Cloud Config
Spring Cloud Config
komponen, There adalah dua peranan, satu adalah pelayan konfigurasi dan satu lagi adalah klien konfigurasi. Cara penggunaan: 🎜tentang pemahaman anda tentang Cloud
Musim bunga Cloud Gateway ialah Rangka kerja gerbang generasi kedua yang dilancarkan secara rasmi oleh Spring Cloud menggantikan gerbang Zuul. Sebagai pengawal trafik, pintu masuk memainkan peranan yang sangat penting dalam sistem perkhidmatan mikro Fungsi umum get laluan termasuk penghalaan dan pemajuan, pengesahan kebenaran dan kawalan pengehadan semasa.
Kacang RouteLocatorBuilder digunakan untuk membuat laluan Selain mencipta laluan, RouteLocatorBuilder membolehkan anda menambah pelbagai predikat dan penapis Maksud penegasan predikat, seperti namanya, adalah untuk diproses oleh laluan tertentu mengikut peraturan permintaan tertentu. Penapis ialah setiap penapis yang digunakan untuk membuat pelbagai pertimbangan dan pengubahsuaian pada permintaan.
Atas ialah kandungan terperinci Maklum balas temu bual siri 25 syot Spring Cloud. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!