Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Redis sentinel vs pengelompokan

Pertama, mari kita bicara tentang penjaga.

Sentinel mengelola failover, tidak mengonfigurasi Redis untuk HA. Ini adalah perbedaan penting. Kedua, diagram yang Anda posting sebenarnya adalah pengaturan yang buruk - Anda tidak ingin menjalankan Sentinel pada node yang sama dengan node Redis yang dikelolanya. Saat Anda kehilangan host itu, Anda kehilangan keduanya.

Seperti "Apakah itu pemborosan sumber daya?" itu tergantung pada kasus penggunaan Anda. Anda tidak memerlukan tiga node Redis dalam pengaturan itu, Anda hanya perlu dua. Tiga meningkatkan redundansi Anda, tetapi tidak diperlukan. Jika Anda membutuhkan redundansi tambahan maka itu bukan pemborosan sumber daya. Jika Anda tidak memerlukan redundansi maka Anda cukup menjalankan satu instance Redis dan menyebutnya bagus - karena menjalankan lebih banyak akan "sia-sia".

Alasan lain untuk menjalankan dua budak adalah untuk membagi bacaan. Sekali lagi, jika Anda membutuhkannya, itu tidak akan sia-sia.

Mengenai "Apakah ada cara yang lebih baik untuk menggunakan sepenuhnya sumber daya yang tersedia?" kami tidak dapat menjawabnya karena terlalu bergantung pada skenario dan kode spesifik Anda. Artinya, jika jumlah data yang akan disimpan "kecil" dan kecepatan perintah tidak terlalu tinggi, ingatlah bahwa Anda tidak perlu mendedikasikan sebuah host ke Redis.

Sekarang untuk "Apakah pengelompokan Redis merupakan alternatif untuk Redis sentinel?". Ini benar-benar tergantung sepenuhnya pada kasus penggunaan Anda. Redis Cluster bukan solusi HA - ini adalah solusi banyak penulis/lebih besar dari ram. Jika tujuan Anda hanya HA maka kemungkinan itu tidak akan cocok untuk Anda. Redis Cluster hadir dengan keterbatasan, terutama seputar operasi multi-kunci, sehingga tidak selalu merupakan operasi "cukup gunakan cluster" yang mudah.

Jika Anda berpikir memiliki tiga host yang menjalankan Redis (dan tiga menjalankan sentinel) adalah pemborosan, Anda mungkin akan menganggap Cluster lebih dari itu karena membutuhkan lebih banyak sumber daya.

Pertanyaan yang Anda ajukan mungkin terlalu luas dan berdasarkan opini untuk bertahan seperti yang tertulis. Jika Anda memiliki kasus/masalah tertentu yang sedang Anda tangani, harap perbarui dengan itu sehingga kami dapat memberikan bantuan dan informasi khusus.

Pembaruan untuk spesifik:

Untuk manajemen failover yang tepat dalam skenario Anda, saya akan menggunakan 3 penjaga, satu berjalan di server JBoss Anda. Jika Anda memiliki 3 node JBoss, maka gunakan masing-masing satu. Saya akan memiliki pod Redis (master+slave) pada node yang terpisah, dan membiarkan sentinel mengelola failover.

Dari sana, tinggal memasang kabel JBoss/Jedis untuk menggunakan Sentinel untuk manajemen informasi dan koneksinya. Karena saya tidak menggunakan itu, pencarian cepat ternyata Jedis memiliki dukungan untuk itu, Anda hanya perlu mengonfigurasinya dengan benar. Beberapa contoh yang saya temukan adalah di Mencari contoh Jedis dengan Sentinel dan https://github.com/xetorthio/jedis/issues/725 yang berbicara tentang JedisSentinelPool menjadi rute untuk menggunakan kolam.

Ketika Sentinel menjalankan failover, klien akan terputus dan Jedis akan (harus?) menangani koneksi ulang dengan menanyakan Sentinel siapa master saat ini.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kegagalan cluster redis:budak tidak akan menjadi master

  2. RuntimeWarning:Anda menjalankan pekerja dengan hak pengguna super:ini sama sekali tidak disarankan

  3. Bagaimana cara memperbarui redis setelah memperbarui basis data?

  4. Klien C#/.NET untuk Redis

  5. Semburan RedisTimeoutException menggunakan StackExchange.Redis