面试问题redis的集群方案有哪些?
多个同构的twemproxy(具有相同的配置)同时工作,
接受客户端的请求,根据哈希算法转发到对应的redis。
优势:
-开发简单,对应用程序几乎透明
——历史悠久,方案成熟。
缺点:
-代理影响性能
-lvs和twemproxy会有节点性能瓶颈。
-redis扩展很麻烦。
Twitter内部已经放弃了该方案,新使用的架构也不是开源的。
Codis:
动物园管理员:
存储路由表和代理节点元数据。
分发Codis-Config的命令。
codis-配置:
具有web界面的集成管理工具。
codis-代理:
无状态代理,兼容Redis协议
对业务透明
Codis-Redis:
基于2.8版本,二次开发。
添加插槽支持和迁移命令
优势:
-开发简单,对应用程序几乎透明
-性能优于Twemproxy
-图形界面,易于扩展,操作维护方便。
缺点:
-代理仍然会影响性能
-组件太多,需要大量机器资源
redis代码被修改,导致无法与官方同步,新功能跟进缓慢。
-开发团队准备基于redis改造提升reborndb。
Redis集群:
P2P模式,无中心化
把钥匙分成16384槽。
每个实例负责一部分插槽。
如果客户端请求不在连接的实例中,该实例将被转发到相应的实例。
通过Gossip协议同步节点信息
优势:
-组件一体化,易于部署并节省机器资源。
-性能优于代理模式
-自动故障切换,插槽迁移中的数据可用性
-官方原创集群方案,保证更新和支持。
缺点:
-架构相对较新,几乎没有最佳实践。
-有限支持多键操作(司机可以曲线救国)
-为了提高性能,客户端需要缓存路由表信息。
-节点发现和重新共享操作不够自动化。