Sebelum memperkenalkan Dubbo, mari kita fahami konsep asas:
Dubbo ialah rangka kerja RPC
, RPC
, Iaitu, Remote Procedure Call
(panggilan prosedur jauh), berbanding dengan panggilan prosedur tempatan Sebelum seni bina yang diedarkan, seni bina aplikasi tunggal dan seni bina aplikasi menegak menggunakan panggilan prosedur tempatan. Ia membenarkan program untuk memanggil prosedur atau fungsi dalam ruang alamat lain (biasanya mesin lain yang dikongsi pada rangkaian) tanpa pengaturcara perlu mengekodkan butiran panggilan jauh secara eksplisit.
Panggilan jauh antara aplikasi seni bina yang diedarkan memerlukan rangka kerja RPC
untuk membuat panggilan jauh semudah panggilan tempatan.
ialah pengguna perkhidmatan yang memanggil perkhidmatan jauh Pengguna perlu antara muka pengaturcaraan Antara muka yang mana boleh dipanggil, pelaksanaan khusus memerlukan rangka kerja untuk menyediakan kelas proksi untuk menyediakan pelaksanaan khusus untuk antara muka, supaya pengguna hanya perlu memanggil antara muka yang mana, dan pemerolehan pelaksanaan khusus dikendalikan oleh kelas proksi.
Pengguna juga perlu memberikan nama kaedah panggilan dan nilai parameter kaedah.
Tetapi kelas proksi belum mengetahui kaedah jauh mana pada pelayan yang perlu dipanggil pada masa ini, pusat pendaftaran diperlukan untuk mendapatkan senarai perkhidmatan jauh yang boleh dipanggil.
Pelayan jauh biasanya digunakan dalam kelompok, jadi pelayan yang hendak dipanggil memerlukan pengimbangan beban untuk memilih pelayan yang paling sesuai untuk dipanggil.
Pada masa yang sama, mekanisme toleransi kesalahan kelompok juga diperlukan Atas pelbagai sebab, panggilan jauh mungkin gagal Pada masa ini, mekanisme toleransi kesalahan diperlukan untuk mencuba semula panggilan untuk memastikan kestabilan daripada panggilan jauh.
Pada masa yang sama, protokol komunikasi dan format siri dipersetujui dengan pembekal perkhidmatan untuk memudahkan komunikasi dan penghantaran data.
ialah penyedia perkhidmatan yang mendedahkan perkhidmatan Pembekal perkhidmatan melaksanakan antara muka tertentu secara dalaman, kemudian mendedahkan antara muka, dan kemudian mendaftarkan perkhidmatan di pusat pendaftaran perkhidmatan. Selepas pembekal menerima permintaan panggilan, ia memproses permintaan melalui protokol komunikasi yang dipersetujui, dan kemudian menyahsirinya Setelah selesai, ia meletakkan permintaan itu ke dalam kumpulan benang untuk diproses dan mencari pelaksanaan antara muka yang sepadan . Buat panggilan dan kemudian kembalikan hasil panggilan.
ialah pusat pendaftaran untuk pendaftaran perkhidmatan dan penemuan Pusat pendaftaran bertanggungjawab untuk pendaftaran dan carian alamat perkhidmatan hanya mendaftar antara satu sama lain apabila memulakan interaksi Pusat, pusat pendaftaran tidak memajukan permintaan, dan tekanan adalah rendah.
Pendaftaran juga boleh memusatkan konfigurasi dan secara dinamik memberitahu pelanggan tentang perubahan.
Tetapi mengapa kita memerlukan pusat pendaftaran? Bukankah mungkin tanpa pusat pendaftaran?
Jika tiada pusat pendaftaran, hubungan panggilan antara perkhidmatan adalah seperti berikut:
Apabila terdapat lebih banyak perkhidmatan, pengurusan konfigurasi URL perkhidmatan menjadi Sangat sukar Tekanan satu titik pada pengimbang beban perkakasan juga meningkat Dengan pusat pendaftaran, pengurusan perkhidmatan yang bersatu dapat dicapai, pengimbangan beban lembut dapat dikurangkan gambarajah skema pusat pendaftaran:
ialah pusat pemantauan yang mengira bilangan dan masa panggilan perkhidmatan, diperhalusi pemantauan dan operasi dan penyelenggaraan yang mudah adalah sangat diperlukan, yang sangat penting untuk penyelenggaraan kemudian.
ialah bekas di mana perkhidmatan dijalankan.
Peranan yang dimainkan oleh setiap nod dalam rajah telah diperkenalkan Berikut ialah hubungan panggilan antara setiap nod:
Container
Bekas perkhidmatan bertanggungjawab untuk memulakan, memuatkan dan menjalankan
Provider
Pembekal perkhidmatanProvider
Apabila pembekal perkhidmatan bermula, ia perlu mendedahkan dirinya supaya pelayan jauh dapat menemuinya, dan pada masa yang sama laporkan kepada Registry
pusat pendaftaran Daftar perkhidmatan yang anda sediakan
Consumer
Apabila pengguna perkhidmatan bermula, langgan perkhidmatan yang diperlukan daripada Registry
pusat pendaftaran
Registry
Pusat pendaftaran mengembalikan senarai penyedia perkhidmatan kepada pengguna , dan jika perubahan berlaku, pusat pendaftaran akan menolak data masa nyata kepada pengguna berdasarkan sambungan yang panjang
Apabila pengguna perkhidmatan perlu menghubungi perkhidmatan jauh, ia akan memilih pelayan pembekal daripada senarai alamat penyedia berdasarkan algoritma pengimbangan beban untuk memanggil Jika panggilan gagal, panggilan akan dicuba semula berdasarkan toleransi kesalahan kelompok strategi
Pengguna dan penyedia perkhidmatan akan mengira bilangan panggilan dan masa panggilan dalam ingatan, dan kemudian menghantar data ke Monitor
pusat pemantauan melalui tugas berjadual
Selepas pusat pemantauan turun, ia tidak akan menjejaskan perkhidmatan, tetapi beberapa data statistik akan hilang
Selepas mendaftar kluster pusat, jika ada turun, ia akan bertukar secara automatik ke Pusat Pendaftaran yang lain
Apabila semua pusat pendaftaran tidak berfungsi, penyedia perkhidmatan dan pengguna masih boleh berkomunikasi melalui cache tempatan yang merekodkan maklumat masing-masing. Walau bagaimanapun, jika satu pihak berubah, Pihak yang satu lagi tidak dapat melihat
Pembekal perkhidmatan tidak mempunyai kewarganegaraan Jika mana-mana pelayan terputus, ia tidak akan menjejaskan penggunaannya menyediakan perkhidmatan
Apabila semua penyedia perkhidmatan terputus, pengguna perkhidmatan tidak boleh menggunakannya seperti biasa dan akan menyambung semula selama-lamanya menunggu pembekal perkhidmatan menyambung semula dan menyambung semula
Lapisan utama ialah Perniagaan (lapisan logik perniagaan), lapisan RPC dan lapisan Jarak Jauh.
Dipecahkan, Dubbo mempunyai sejumlah sepuluh lapisan seni bina, dan fungsinya adalah seperti berikut:
Service
, lapisan perniagaan, iaitu lapisan logik perniagaan dalam pembangunan harian
Config
, lapisan konfigurasi, antara muka konfigurasi luaran, berpusat pada ServiceConfig
dan ReferenceConfig
, anda boleh terus memulakan kelas konfigurasi, atau anda boleh menghuraikan konfigurasi melalui Spring untuk menjana kelas konfigurasi
Proxy
, lapisan proksi perkhidmatan, Proksi telus antara muka perkhidmatan menjana klien perkhidmatan Stub
dan klien Skeleton
, yang bertanggungjawab untuk panggilan jauh dan mengembalikan hasil
Registry
lapisan tengah merangkum pendaftaran dan penemuan alamat perkhidmatan untuk menyampaikan URL ialah pusat, dan antara muka pengembangan ialah RegistryFactory
, Registry
, RegistryService
Cluster
lapisan penghalaan dan gugusan toleransi kesalahan, yang merangkum penghalaan, pengimbangan beban dan toleransi kesalahan kluster bagi berbilang penyedia, dan merapatkannya Pusat pendaftaran bertanggungjawab memilih nod tertentu untuk dipanggil melalui pengimbangan beban, memproses permintaan panggilan khas dan mengambil langkah bertoleransi kesalahan untuk kegagalan panggilan jauh
Monitor
Lapisan pemantauan bertanggungjawab untuk memantau dan mengira bilangan panggilan RPC dan masa panggilan
Portocol
, lapisan panggilan jauh, terutamanya merangkumi kaedah panggilan jauh RPC
<.>, lapisan pertukaran maklumat, digunakan untuk merangkum model tindak balas permintaan Exchange
, lapisan pengangkutan rangkaian , antara muka penghantaran rangkaian bersatu abstrak, dengan Transport
dan Mina
tersedia Netty
, lapisan bersiri, menyerikan data ke dalam aliran binari untuk penghantaran, dan juga boleh menyahsiri dan menerima dataSerialize
menjana kelas proksi ProxyFactory
Proksi memegang objek boleh laku Invoker Selepas memanggil Proxy
, anda perlu mendapatkan semua senarai Invoker perkhidmatan jauh boleh dipanggil dari invoke
melalui Cluster
, jika. peraturan penghalaan tertentu dikonfigurasikan, senarai Invoker perlu ditapis semula. Directory
Beberapa statistik data perlu dilakukan melalui Penapis, dan kemudian data disimpan dan dihantar ke LoadBalance
secara kerap. Monitor
untuk penghantaran data, secara amnya gunakan Client
untuk penghantaran. Penghantaran Netty
, dan kemudian bersiri melalui Codec
, dan akhirnya strim binari bersiri dihantar kepada pembekal perkhidmatan yang sepadan. Serialization
Selepas menerima strim binari, penyedia perkhidmatan juga akan melakukan pemprosesan protokol Codec, dan kemudian menyahsiri (pemprosesan di sini adalah simetri kepada pemprosesan sebelum penghantaran) dan kemudian meletakkan permintaan ke dalam kumpulan benang untuk diproses Exporter
yang sepadan mengikut permintaan, kemudian tapis lapisan demi lapisan melalui Penapis untuk mendapatkan Invoker, dan akhirnya panggil kelas pelaksanaan yang sepadan dan kembalikan hasilnya dengan cara asal.
Atas ialah kandungan terperinci Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!