Rumah  >  Artikel  >  Java  >  Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

王林
王林ke hadapan
2023-04-24 20:13:061062semak imbas

    Kata Pengantar

    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.

    Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

    Rangka kerja Dubbo mempunyai komponen berikut

    Pengguna

    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.

    Pembekal

    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.

    Pendaftaran

    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.

    Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

    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:

    Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

    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:

    Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

    Monitor

    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.

    Bekas

    ialah bekas di mana perkhidmatan dijalankan.

    Seni bina

    Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

    Peranan yang dimainkan oleh setiap nod dalam rajah telah diperkenalkan Berikut ialah hubungan panggilan antara setiap nod:

    ContainerBekas perkhidmatan bertanggungjawab untuk memulakan, memuatkan dan menjalankan

    ProviderPembekal perkhidmatanProviderApabila 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 Monitorpusat pemantauan melalui tugas berjadual

    Ketersediaan Tinggi

    • 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

    Reka bentuk rangka kerja

    Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

    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

    Proses pendedahan perkhidmatan

    Mula-mula Penyedia dimulakan, dan Protokol merangkum antara muka yang perlu didedahkan kepada Invoker melalui ejen Proksi, yang merupakan badan boleh laku, dan kemudian membungkusnya melalui Pengeksport dan menghantarnya ke pusat pendaftaran untuk melengkapkan pendaftaran Pada ketika ini Perkhidmatan didedahkan dan selesai.

    Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

    Proses penggunaan perkhidmatan

    Analisis prinsip dan contoh rangka kerja perkhidmatan teragih berasaskan Java Dubbo

    Nota: Bahagian biru dalam gambar di atas ialah pengguna perkhidmatan, dan hijau sebahagiannya ialah pembekal perkhidmatan.

    Apabila pengguna perkhidmatan bermula, ia akan melanggan pusat pendaftaran dan menarik maklumat pembekal perkhidmatan yang diperlukan, dan menyimpannya ke cache tempatan Oleh itu, walaupun semua pusat pendaftaran tidak berfungsi, penyedia perkhidmatan dan perkhidmatan kehendak pengguna Komunikasi juga boleh dijalankan melalui cache tempatan, tetapi jika satu pihak mempunyai perubahan maklumat, pihak lain tidak dapat mengesannya, tetapi ia tidak menjejaskan kemajuan perkhidmatan.

    Kemudian keseluruhan proses penggunaan perkhidmatan bermula dari Proksi dalam rajah, dan diproses oleh kelas proksi untuk mencapai ketelusan dan tiada persepsi.

    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

    Baki Invoker kemudiannya dipilih untuk pengimbangan beban melalui

    Beberapa statistik data perlu dilakukan melalui Penapis, dan kemudian data disimpan dan dihantar ke LoadBalance secara kerap. Monitor

    Seterusnya, gunakan

    untuk penghantaran data, secara amnya gunakan Client untuk penghantaran. Penghantaran Netty

    memerlukan pembinaan protokol melalui antara muka

    , 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!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam