集群方案: 1、 主從高可用(該方案就是單實例形式,只是為了保證數據的安全,對於用戶數據少,業務的前期可以採用,目前我司緩存架構就是採用該方案) 2、 客戶端分片(典型代表:Jedis。自主寫分片演算法,代碼掌握在自己手中,可控性強,但是需要專業的開發運維人員維護,技術要求和維護成本高) 3、代理分片 ...
集群方案:
1、 主從高可用(該方案就是單實例形式,只是為了保證數據的安全,對於用戶數據少,業務的前期可以採用,目前我司緩存架構就是採用該方案)
2、 客戶端分片(典型代表:Jedis。自主寫分片演算法,代碼掌握在自己手中,可控性強,但是需要專業的開發運維人員維護,技術要求和維護成本高)
3、代理分片(典型代表:Twemproxy,redis集群沒有正式推出之前官網推薦的方案,也是目前使用最多的)
4、 Redis cluster(3版本推出的集群方案,歷時四年之多的開發)
5、 Codis集群(豌豆莢15年開源的解決方案,開源之前其已經用了2年之多,與其同期官網推出redis cluster)
6、 各大互聯網公司自主研發的集群架構,但是還沒有開源,可能也不會開源
- codis架構
簡單說明:
1、codis-proxy提供連接集群redis的服務入口
2、codis-config管理工具,支持包括添加/刪除redis/proxy節點,發起數據遷移等操 作,自帶一個dashboard工具,瀏覽器可以直觀查看集群的運行狀態
3、codis-server-group實現redis讀寫的水平擴展、高性能
4、codis-server實現redis實例服務,通過codis-ha實現服務的高可用
5、Zookeeper/etcd存放數據路由表和codis-proxy節點的元信息,codis-config發起的命令通過其同步到各個存活的codis-proxy,則zookeeper如果出問題則可能導致數據不一致的情況或者嚴重的會對外提供服務造成影響
- Twemproxy
簡單說明:
1、proxy提供分片演算法和redis服務入口,支持高可用
2、Redis提供實現實例,並且通過sentinel支持高可用
3、Redis-Twemporxy提供通知底層HA切換至proxy
4、每個層結構出現問題或者變更節點信息等所有操作都需要重新規劃分片演算法,則需要重啟服務
- redis-cluster架構
簡單說明:
1、redis cluster本身集群方案,客戶端可以任一連接一個節點
2、redis-trib.rb腳本為集群的管理工具,比如自動添加節點,規劃槽位,遷移數據等一系列操作(ruby語言)
3、每個節點都和N-1個節點通信,所以要維護好這個集群架構的每個節點信息,不然會導致整個集群不可工作