Mekanisme penemuan layanan layanan mikro adalah metode penempatan instans layanan secara dinamis untuk komunikasi dalam arsitektur layanan mikro.
Hal ini terutama bergantung pada pusat registrasi untuk mengimplementasikan registrasi layanan, kueri, dan mendukung penyeimbangan beban, sehingga meningkatkan skalabilitas dan fleksibilitas sistem.
1. Konsep dasar
Penemuan layanan mengacu pada proses menemukan dan mengidentifikasi layanan yang tersedia secara otomatis dalam sistem terdistribusi.
Dalam arsitektur layanan mikro, karena layanan dipecah menjadi beberapa layanan kecil dan otonom yang tersebar di server berbeda, mekanisme penemuan layanan diperlukan untuk memastikan komunikasi yang efektif antar layanan.
2. Langkah-langkah utama
Pendaftaran layanan:
Ketika instans layanan mikro dimulai, ia akan mendaftarkan informasi lokasi jaringannya (seperti alamat IP dan nomor port) dan identifikasi layanan ke pusat pendaftaran layanan.
Proses registrasi ini biasanya otomatis dan tidak memerlukan campur tangan manusia.
Pusat pendaftaran bertanggung jawab untuk memelihara informasi pendaftaran semua lembaga layanan dan mendukung pendaftaran dinamis dan pencabutan pendaftaran lembaga layanan.
Permintaan layanan:
Ketika layanan mikro perlu memanggil layanan mikro lain, layanan tersebut akan menanyakan registri layanan untuk alamat jaringan yang tersedia saat ini dari layanan yang diperlukan.
Pusat pendaftaran mengembalikan daftar alamat instans layanan, dan pemanggil dapat memilih instans layanan untuk komunikasi sesuai dengan kebijakan penyeimbangan beban.
3. Komponen utama
Registri Layanan:
Ini adalah komponen inti dari mekanisme penemuan layanan dan bertanggung jawab untuk mengelola dan menyimpan informasi pendaftaran semua contoh layanan.
Ini menyediakan antarmuka API untuk instans layanan untuk mendaftar dan membatalkan operasi, dan juga mendukung konsumen layanan untuk menanyakan informasi pendaftaran instans layanan.
Penyedia layanan:
Ini adalah contoh layanan mikro yang menyediakan layanan tertentu.
Ia akan mendaftarkan informasi layanannya sendiri ke dalam registri layanan ketika dimulai, dan membatalkan pendaftaran informasi layanannya sendiri ketika keluar.
Konsumen Jasa:
Ini adalah contoh layanan mikro yang perlu memanggil layanan lain.
Ia memperoleh alamat jaringan dari layanan yang diperlukan dengan menanyakan registri layanan dan menjalin komunikasi dengannya.
4. Bagaimana menerapkan mekanisme penemuan layanan
Mekanisme penemuan layanan dapat dibagi menjadi dua jenis: penemuan klien dan penemuan server menurut metode implementasinya:
mode penemuan klien:
Klien bertanggung jawab untuk menanyakan pusat pendaftaran, mendapatkan daftar layanan yang tersedia, dan berinteraksi langsung dengan instans layanan sesuai dengan kebijakan penyeimbangan beban.
Keuntungannya adalah klien dapat secara fleksibel merumuskan strategi penyeimbangan beban, sehingga mengurangi ketergantungan pada pusat registrasi layanan.
Kerugiannya adalah klien perlu menerapkan logika penemuan yang kompleks, yang meningkatkan kompleksitas kode dan biaya pemeliharaan.
Mode penemuan server:
Klien mengirimkan permintaan ke server (biasanya gateway API atau proxy layanan), dan server bertanggung jawab untuk menanyakan pusat pendaftaran dan meneruskan permintaan ke instance layanan sebenarnya.
Keuntungannya adalah menyederhanakan implementasi klien dan mengurangi kompleksitas kode dan biaya pemeliharaan.
Kerugiannya adalah meningkatkan latensi sistem dan titik kegagalan, karena semua permintaan harus diteruskan melalui server.
5. Keuntungan mekanisme penemuan layanan
Kurangi sambungan antar layanan:
Microservices tidak perlu mengetahui alamat jaringan satu sama lain secara langsung, mereka hanya perlu berkomunikasi melalui pusat registrasi layanan.
Meningkatkan skalabilitas dan fleksibilitas sistem:
Ketika layanan berubah secara dinamis (seperti perluasan, pengurangan, migrasi, dll.), pusat pendaftaran layanan dapat memperbarui informasi contoh layanan secara real-time untuk memastikan bahwa komunikasi antar layanan tidak terpengaruh.
Mendukung penyeimbangan beban dan failover:
Klien dapat memperoleh daftar alamat beberapa contoh layanan dari pusat pendaftaran layanan dan memilih salah satunya untuk komunikasi berdasarkan kebijakan penyeimbangan beban. Ketika instans layanan tidak tersedia, registri layanan dapat secara otomatis menandainya sebagai tidak sehat dan menghindari pengiriman permintaan ke instans tersebut.
6. Alat penemuan layanan umum
Bahasa Indonesia: Eureka:
Alat penemuan layanan yang dikembangkan oleh Netflix, menggunakan mode penemuan klien. Ini sangat ringan dan mudah diintegrasikan dan digunakan.
Konsul:
Alat pusat penemuan dan konfigurasi layanan yang dikembangkan oleh HashiCorp. Ini memberikan solusi yang relatif lengkap termasuk pemeriksaan kesehatan layanan dan fungsi lainnya, dan mendukung protokol HTTP dan DNS.
Penjaga kebun binatang:
Apache ZooKeeper adalah layanan koordinasi terdistribusi sumber terbuka yang juga dapat digunakan untuk penemuan layanan. Ini menyediakan kunci terdistribusi, layanan penamaan dan fungsi lainnya, dan mendukung berbagai perpustakaan klien.
Dalam arsitektur layanan mikro, mekanisme penemuan layanan mewujudkan fungsi registrasi dan kueri dinamis dari instans layanan melalui pusat registrasi, sehingga mengurangi sambungan antar layanan dan meningkatkan skalabilitas dan fleksibilitas sistem.