redis目前有没有成熟的水平扩展机制?

redis目前好像3.0版本以上了,目前技术上分布式水平扩展成熟的方案有吗?希望推荐一个开源的解决方案。谢谢。显示全部

redis目前好像3.0版本以上了,目前技术上分布式水平扩展成熟的方案有吗?希望推荐一个开源的解决方案。谢谢。

收起
参与10

查看其它 1 个回答顾黄亮的回答

顾黄亮顾黄亮课题专家组技术总监畅销书作者

常用的有三种,rediscluster、twemproxy、codis
第一种是redis原生的集群,平滑水平扩容比较容易,后两种缓存服务代理
twemproxy特点:1.通过代理的方式减少缓存服务器的连接数。
2.自动在多台缓存服务器间共享数据。
3.通过不同的策略与散列函数支持一致性散列。4.通过配置的方式禁用失败的结点。
5.运行在多个实例上,客户端可以连接到首个可用的代理服务器。
6.支持请求的流式与批处理,因而能够降低来回的消耗。
codis特点:1.Codis是一整套缓存解决方案,包含高可用、数据分片、监控、动态扩态 etc.。走的是 Apps->代理->redis cluster,一定规模后基本都采用这种方式。
2.Codis引入了Group的概念,每个Group包括1个Redis Master及至少1个Redis Slave,这是和Twemproxy的区别之一。这样做的好处是,如果当前Master有问题,则运维人员可通过Dashboard“自助式”切换到Slave,而不需要小心翼翼地修改程序配置文件。
3.为支持数据热迁移(Auto Rebalance),出品方修改了Redis Server源码,并称之为Codis Server。
4.Codis采用预先分片(Pre-Sharding)机制,事先规定好了,分成1024个slots(也就是说,最多能支持后端1024个Codis Server),这些路由信息保存在ZooKeeper中。
5.Codis仅负责维护当前Redis Server列表,由运维人员自己去保证主从数据的一致性。
rediscluster特点:1.无中心架构。
2.数据按照slot存储分布在多个节点,节点间数据共享,可动态调整数据分布。
3.可扩展性,可线性扩展到1000个节点,节点可动态添加或删除。
4.高可用性,部分节点不可用时,集群仍可用。通过增加Slave做standby数据副本,能够实现故障自动failover,节点之间通过gossip协议交换状态信息,用投票机制完成Slave到Master的角色提升。
5.降低运维成本,提高系统的扩展性和可用性。”

银行 · 2019-04-24
浏览2031

回答者

顾黄亮
技术总监畅销书作者
擅长领域: 云计算数据库系统运维

顾黄亮 最近回答过的问题

回答状态

  • 发布时间:2019-04-24
  • 关注会员:3 人
  • 回答浏览:2031
  • X社区推广