轉自 https://www.iteye.com/blog/ballenlee-2514207
1. cluster模式
優點:
- 客戶端(Jedis)直連redis節點,性能會更好
缺點:
1. 客戶端(Jedis)直連redis節點,意味着客戶端就需要保存集群所有節點信息,當集群比較大100-200個master節點時,這個數據量會比較大
2. 當集群規模比較大,100-200個master節點時,算上從節點,要到200-400個節點,互相ping pong的健康檢查網絡開銷會非常大
2. proxy模式
優點:
1. 客戶端(Jedis)直連有限的proxy節點,會比較輕量和簡單
2. 集群規模理論上可以非常大,因為proxy對外隱藏了集群規模
缺點:
1. 多了一層proxy訪問,性能會有影響
2. 需要第三方的proxy實現,集群水平擴容時proxy要想平滑動態更新集群配置,需要開發工具支持
3. 方案
1. 采用 twemproxy做為代理,去zk獲取集群配置
2. 集群通過sentinel保證高可用
4. 水平擴容
1. 開發工具,偽裝成集群的slave節點,從而拿到RDB文件和增量更新數據,路由到新的集群(此處的路由算法要保證和twemproxy實際實現的一致)
2. 當開發工具評估兩個集群基本一致(實時更新數據較小、偏移量追平等因素綜合考慮),更新新的集群配置到zk
3. zk會動態通知twemproxy,由於twemproxy的路由算法跟4.1步驟相同,基本就可以保證平滑遷移
