Pertama-tama Anda dapat mengubah konfigurasi default jika Anda melakukan sedikit pekerjaan di
redis-trib.rb
dalam fungsi def check_create_parameters
. Anda dapat mengatur satu master dan satu replika slave.
Tujuan dari konfigurasi ini adalah untuk toleransi kesalahan. Budak juga dapat digunakan untuk membaca (READONLY). Di tiga master, slot hash didistribusikan secara merata dan dengan algoritme penyeimbangan beban Anda dapat mendistribusikan ulang dan kunci yang sebenarnya. Langkah-langkah dari algoritme yang mungkin yang mendistribusikan kunci di antara node adalah (diuji oleh saya dan berfungsi seperti yang diharapkan):
- Temukan kerumunan para master
- Dapatkan jumlah total kunci yang mereka pegang
- Untuk setiap node master, simpan nama host, port, dan jumlah kunci
- Hitung kunci yang harus dimiliki setiap master agar distribusi kunci seimbang (total kunci cluster / jumlah master)
- Temukan node master mana yang harus mengambil atau memberikan kunci dan jumlah total kunci yang harus mereka berikan/ambil
- Mencirikan master sebagai node sumber atau target bergantung pada apakah master menerima atau memberikan kunci secara berurutan
- Mulailah bermigrasi dari node sumber ke node target, pertama-tama slot hash, lalu kunci yang relevan, dan ulangi hingga semua master memiliki jumlah kunci yang sama
Algoritma ini akan membantu untuk meminimalkan waktu respon. Apa yang saya maksud:
Dengan tiga master waktu respons dapat diminimalkan. Jika Anda memiliki konfigurasi dengan satu master dan master ini menampung misalnya 30000 #kunci, waktu respons untuk mendapatkan 1000 kunci sekaligus adalah> dari konfigurasi dengan 2 master yang masing-masing menampung 15000.
Jika Anda membuat kunci di master1, maka jika Anda mencoba menjangkau (membaca) kunci itu dari master2, Anda akan mendapatkan kesalahan MOVED. Jadi, solusinya adalah membuat klien pintar yang memetakan slot hash ke node yang sesuai. Dengan demikian, Anda dapat menghapus kunci dari master2 hanya jika master2 mengalihkan permintaan Anda ke master yang benar.
Semoga membantu.