数据库:一文解析Redis读写分离技术( 二 )


文章图片

文章图片

结合上述的讨论和比较 , Redis读写分离选择链式复制的架构 。
Redis读写分离优势
透明兼容
读写分离和普通集群规格一样 , 都使用了redis-proxy做请求转发 , 多分片令使用存在一定的限制 , 但从主从升级单分片读写分离 , 或者从集群升级到多分片的读写分离集群可以做到完全兼容 。
用户和redis-proxy建立连接 , redis-proxy会识别出客户端连接发送过来的请求是读还是写 , 然后按照权重作负载均衡 , 将请求转发到后端不同的DB节点中 , 写请求转发给master , 读操作转发给read-only replica(master默认也提供读 , 可以通过权重控制) 。
用户只需要购买读写分离规格的实例 , 直接使用任何客户端即可直接使用 , 业务不用做任何修改就可以开始享受读写分离服务带来的巨大性能提升 , 接入成本几乎为0 。
高可用
高可用模块(HA)监控所有DB节点的健康状态 , 为整个实例的可用性保驾护航 。master宕机时自动切换到新主 。如果某个read-only replica宕机 , HA也能及时感知 , 然后重搭一个新的read-only replica , 下线宕机节点 。
除HA之外 , redis-proxy也能实时感知每个read-only replica的状态 。在某个read-only replica异常期间 , redis-proxy会自动降低这个节点的权重 , 如果发现某个read-only replica连续失败超过一定次数以后 , 会暂时屏蔽异常节点 , 直到异常消失以后才会恢复其正常权重 。
redis-proxy和HA一起做到尽量减少业务对后端异常的感知 , 提高服务可用性 。
高性能
对于读多写少的业务场景 , 直接使用集群版本往往不是最合适的方案 , 现在读写分离提供了更多的选择 , 业务可以根据场景选择最适合的规格 , 充分利用每一个read-only replica的资源 。
目前单shard对外售卖1 master + 1/3/5 read-only replica多种规格(如果有更大的需求可以提工单反馈) , 提供60万QPS和192 MB/s的服务能力 , 在完全兼容所有命令的情况下突破单机的资源限制 。后续将去掉规格限制 , 让用户根据业务流量随时自由的增加或减少read-only replica数量 。
数据库:一文解析Redis读写分离技术
文章图片

文章图片

后续
【数据库:一文解析Redis读写分离技术】Redis主从异步复制 , 从read-only replica中可能读到旧的数据 , 使用读写分离需要业务可以容忍一定程度的数据不一致 , 后续将会给客户更灵活的配置和更大的自由 , 比如配置可以容忍的最大延迟时间 。


推荐阅读