Redis Cluster模式与Proxy模式比较
转自 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步骤相同,基本就可以保证平滑迁移