数据库:一文解析Redis读写分离技术
北京联盟_原题是:一文解析Redis读写分离技术
云数据库Redis版不管主从版还是集群规格 , replica作为备库不对外提供服务 , 只有在发生HA的时候 , replica提升为master后才承担读写流量 。这种架构读写请求都在master上完成 , 一致性较高 , 但性能受到master数量的限制 。经常有用户数据较少 , 但因为流量或者并发太高而不得不升级到更大的集群规格 。
文章图片
文章图片
背景
云数据库Redis版不管主从版还是集群规格 , replica作为备库不对外提供服务 , 只有在发生HA的时候 , replica提升为master后才承担读写流量 。这种架构读写请求都在master上完成 , 一致性较高 , 但性能受到master数量的限制 。经常有用户数据较少 , 但因为流量或者并发太高而不得不升级到更大的集群规格 。
为满足读多写少的业务场景 , 最大化节约用户成本 , 云数据库Redis版推出了读写分离规格 , 为用户提供透明、高可用、高性能、高灵活的读写分离服务 。
架构
Redis集群模式有redis-proxy、master、replica、HA等几个角色 。在读写分离实例中 , 新增read-only replica角色来承担读流量 , replica作为热备不提供服务 , 架构上保持对现有集群规格的兼容性 。redis-proxy按权重将读写请求转发到master或者某个read-only replica上;HA负责监控DB节点的健康状态 , 异常时发起主从切换或重搭read-only replica , 并更新路由 。
一般来说 , 根据master和read-only replica的数据同步方式 , 可以分为两种架构:星型复制和链式复制 。
星型复制
星型复制就是将所有的read-only replica直接和master保持同步 , 每个read-only replica之间相互独立 , 任何一个节点异常不影响到其他节点 , 同时因为复制链比较短 , read-only replica上的复制延迟比较小 。
Redis是单进程单线程模型 , 主从之间的数据复制也在主线程中处理 , read-only replica数量越多 , 数据同步对master的CPU消耗就越严重 , 集群的写入性能会随着read-only replica的增加而降低 。此外 , 星型架构会让master的出口带宽随着read-only replica的增加而成倍增长 。Master上较高的CPU和网络负载会抵消掉星型复制延迟较低的优势 , 因此 , 星型复制架构会带来比较严重的扩展问题 , 整个集群的性能会受限于master 。
文章图片
文章图片
链式复制
链式复制将所有的read-only replica组织成一个复制链 , 如下图所示 , master只需要将数据同步给replica和复制链上的第一个read-only replica 。
链式复制解决了星型复制的扩展问题 , 理论上可以无限增加read-only replica的数量 , 随着节点的增加整个集群的性能也可以基本上呈线性增长 。
链式复制的架构下 , 复制链越长 , 复制链末端的read-only replica和master之间的同步延迟就越大 , 考虑到读写分离主要使用在对一致性要求不高的场景下 , 这个缺点一般可以接受 。但是如果复制链中的某个节点异常 , 会导致下游的所有节点数据都会大幅滞后 。更加严重的是这可能带来全量同步 , 并且全量同步将一直传递到复制链的末端 , 这会对服务带来一定的影响 。为了解决这个问题 , 读写分离的Redis都使用阿里云优化后的binlog复制版本 , 最大程度的降低全量同步的概率 。
推荐阅读
- 「链得得APP」一文彻底读懂BTC的“祖孙三代”
- #3D打印#一文带你了解3D打印如何制作家具
- 「Pro」原创 一加8系列首销1分钟破亿,一文看懂为什么消费者如此乐于买单?
- :一文看懂魅族mSmart 5G快省稳系统方案 魅族17首发
- #游戏#玩家游戏神器,ColorOS7.1上的游戏秘书有多贴心,一文告诉你
- 智能名片■微信小程序制作开发流程和需要的费用详细解析
- ##美国能源部门数据安全遭遇重创 RigUp数据库泄露76000份保密文件
- 『』一文详解以太坊虚拟机(EVM)的数据存储机制
- 『』想要“剁手”的冲动 微星发布会重磅产品解析
- 『中国人民银行』划时代产物!一文看懂央行数字货币