Redis Cluster 集群模式原理和动态扩容
Redis Cluster原理
詳細參考 Redis cluster集群模式的原理, 在這里補充下要點
16384個slot, 平均分布在各個master, key-value 對存儲在slot中; 因此達到分片存儲的效果; key的hash值對16384取模后, 映射到slot
redis cluster默認是不支持slave節點讀或者寫的, 這和哨兵模式有區別
基于slot的請求重定向: 客戶端可能會挑選任意一個redis實例去發送命令,每個redis實例接收到命令,都會計算key對應的hash slot, 根據slot實際所在的節點重定向
redis cluster 高可用的原理,同樣是主從復制, 主備切換
Redis Cluster動態擴容與收縮
詳細參考 Redis Cluster動態擴容與收縮, 概括如下
redis 的動態擴容操作都是通過redis源碼文件夾中, redis-trib.rb腳本文件來完成的, 運行此腳本需要 ruby環境, 參考 CentOS安裝ruby環境.
為Cluster動態增加節點(也就是添加的時候不影響正在運行的節點), 需要先主后從, slot遷移在添加主節點之后; 反之, 動態刪除節點, 需要先從后主, slot遷移在刪除主節點之前
添加主節點到集群命令 ruby redis-trib.rb add-node <new node> <existing node>, 其中new node和 existing node(Cluster中任意一個master均可) 自行替換
重新分片, 為新節點遷移slot: ruby redis-trib.rb reshard <existing node>此后按提示操作, 需要指定新的node中遷移的slot數量, 以及從哪些節點遷移
刪除主節點前, 先遷出slot, 移除slot 輸入值要比slot總數小1(詳見原文)
執行主節點刪除: ruby redis-trib.rb del-node <existing node> <node id>
哨兵模式和集群模式的異同
哨兵模式不能動態擴容和收縮
哨兵模式只有主節點可以進行寫操作, 容易成為性能瓶頸
集群模式的數據是分片存儲的
集群模式沒有讀寫分離
都采用主從復制, 主備切換來實現高可用
————————————————
原文鏈接:https://blog.csdn.net/robbyzhan/article/details/103891024
總結
以上是生活随笔為你收集整理的Redis Cluster 集群模式原理和动态扩容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 注解 @EnableFeignClien
- 下一篇: Redis cluster集群扩容缩容原