面试问题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协议同步节点信息

优势:

-组件一体化,易于部署并节省机器资源。

-性能优于代理模式

-自动故障切换,插槽迁移中的数据可用性

-官方原创集群方案,保证更新和支持。

缺点:

-架构相对较新,几乎没有最佳实践。

-有限支持多键操作(司机可以曲线救国)

-为了提高性能,客户端需要缓存路由表信息。

-节点发现和重新共享操作不够自动化。