Konsul - Arsitektur
Diagram arsitektur untuk konsul yang bekerja di satu pusat data dapat dijelaskan dengan baik seperti yang ditunjukkan di bawah ini -
Seperti yang bisa kami amati, ada tiga server berbeda yang dikelola oleh Konsul. Arsitektur yang berfungsi bekerja dengan menggunakan algoritma rakit, yang membantu kami dalam memilih pemimpin dari tiga server yang berbeda. Server ini kemudian diberi label sesuai dengan tag sepertiFollower dan Leader. Seperti namanya, follower bertanggung jawab untuk mengikuti keputusan leader. Ketiga server ini selanjutnya terhubung satu sama lain untuk komunikasi apa pun.
Setiap server berinteraksi dengan kliennya sendiri menggunakan konsep RPC. Komunikasi antara Klien dimungkinkan karenaGossip Protocolseperti yang disebutkan di bawah ini. Fasilitas Komunikasi dengan internet dapat dilakukan dengan menggunakan metode komunikasi TCP atau gosip. Komunikasi ini berhubungan langsung dengan salah satu dari tiga server.
Algoritma Rakit
Rakit adalah algoritma konsensus untuk mengelola log yang direplikasi. Itu bergantung pada prinsipCAP Theorem, yang menyatakan bahwa dengan adanya partisi jaringan, seseorang harus memilih antara konsistensi dan ketersediaan. Tidak semua tiga dasar Teorema CAP dapat dicapai pada suatu waktu tertentu. Seseorang harus menukar dua dari mereka yang terbaik.
SEBUAH Raft Clusterberisi beberapa server, biasanya dalam jumlah ganjil. Misalnya, jika kita memiliki lima server, ini akan memungkinkan sistem untuk mentolerir dua kegagalan. Pada waktu tertentu, setiap server berada di salah satu dari tiga status:Leader, Follower, atau Candidate. Dalam operasi normal, hanya ada satu pemimpin dan semua server lainnya adalah pengikut. Pengikut ini dalam keadaan pasif, yaitu mereka tidak mengajukan permintaan sendiri, tetapi hanya menanggapi permintaan dari pemimpin dan kandidat.
Ilustrasi berikut menjelaskan model alur kerja yang menggunakan algoritma rakit -
Data Nilai Kunci
Sejak Konsul versi 0.7.1, telah ada pengenalan data nilai kunci yang terpisah. Perintah KV digunakan untuk berinteraksi dengan penyimpanan nilai kunci Konsul melalui baris perintah. Ini memperlihatkan perintah tingkat atas untukInserting, Updating, Reading dan Deletingdari toko. Untuk mendapatkan penyimpanan objek Kunci / Nilai, kami memanggil metode KV yang tersedia untuk klien konsul -
kv := consul.KV()
Itu KVPair Structuredigunakan untuk mewakili entri kunci / nilai tunggal. Struktur Pasangan Konsul KV dapat kita lihat pada program berikut.
type KVPair struct {
Key string
CreateIndex uint64
ModifyIndex uint64
LockIndex uint64
Flags uint64
Value []byte
Session string
}
Di sini, berbagai struktur yang disebutkan dalam kode di atas dapat didefinisikan sebagai berikut -
Key- Ini adalah nama URL garis miring. Misalnya - situs / 1 / domain.
CreateIndex - Nomor indeks diberikan saat kunci pertama kali dibuat.
ModifyIndex - Nomor indeks diberikan saat kunci terakhir diperbarui.
LockIndex - Nomor indeks dibuat ketika kunci baru diperoleh pada entri kunci / nilai
Flags - Dapat digunakan oleh aplikasi untuk mengatur nilai khusus.
Value - Ini adalah array byte maksimum 512kb.
Session - Dapat diatur setelah membuat objek sesi.
Jenis Protokol
Ada dua jenis protokol di Konsul, yaitu -
- Protokol Konsensus dan
- Protokol Gosip
Mari kita sekarang memahaminya secara detail.
Protokol Konsensus
Protokol konsensus digunakan oleh Konsul untuk memberikan Konsistensi seperti yang dijelaskan oleh Teorema CAP. Protokol ini didasarkan pada Algoritma Rakit. Saat menerapkan protokol Konsensus, Algoritma Rakit digunakan di mana node rakit selalu berada di salah satu dari tiga status: Pengikut, Kandidat atau Pemimpin.
Protokol Gosip
Protokol gosip dapat digunakan untuk mengelola keanggotaan, mengirim dan menerima pesan di seluruh cluster. Dalam konsul, penggunaan protokol gosip terjadi dalam dua cara,WAN (Jaringan Area Nirkabel) dan LAN(Jaringan Area Lokal). Ada tiga pustaka yang diketahui, yang dapat menerapkan Algoritma Gosip untuk menemukan node dalam jaringan peer-to-peer -
teknek-gossip - Ia bekerja dengan UDP dan ditulis di Java.
gossip-python - Ini menggunakan tumpukan TCP dan dimungkinkan untuk berbagi data melalui jaringan yang dibangun juga.
Smudge - Ditulis dalam Go dan menggunakan UDP untuk bertukar informasi status.
Protokol gosip juga telah digunakan untuk mencapai dan memelihara konsistensi basis data terdistribusi atau dengan jenis data lain dalam status konsisten, menghitung jumlah node dalam jaringan dengan ukuran yang tidak diketahui, menyebarkan berita dengan baik, mengatur node, dll.
Panggilan Prosedur Jarak Jauh
RPC dapat dilambangkan sebagai bentuk singkat untuk Panggilan Prosedur Jarak Jauh. Ini adalah protokol yang digunakan satu program untuk meminta layanan dari program lain. Protokol ini dapat ditempatkan di komputer lain di jaringan tanpa harus mengetahui detail jaringan.
Keindahan nyata menggunakan RPC di Konsul adalah, hal itu membantu kami menghindari masalah latensi yang dimiliki sebagian besar alat layanan penemuan beberapa waktu lalu. Sebelum RPC, Konsul dulu hanya punyaTCP dan UDPkoneksi berbasis, yang bagus dengan kebanyakan sistem, tetapi tidak dalam kasus sistem terdistribusi. RPC memecahkan masalah tersebut dengan mengurangi periode waktu transfer informasi paket dari satu tempat ke tempat lain. Di area ini, GRPC oleh Google adalah alat yang hebat untuk dinantikan jika seseorang ingin mengamati tolok ukur dan membandingkan kinerja.