关于redis:redis-读写分离架构技术解析

背景

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复制版本,最大水平的升高全量同步的概率。

更多对于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一起做到尽量减少业务对后端异样的感知,进步服务可用性。能够参考:Redis低成本高可用计划

高性能

对于读多写少的业务场景,间接应用集群版本往往不是最合适的计划,当初读写拆散提供了更多的抉择,业务能够依据场景抉择最适宜的规格,充分利用每一个read-only replica的资源。

目前单shard对外售卖1 master + 1/3/5 read-only replica多种规格(如果有更大的需要能够提工单反馈),提供60万QPS和192 MB/s的服务能力,在齐全兼容所有命令的状况下冲破单机的资源限度。后续将去掉规格限度,让用户依据业务流量随时自在的减少或缩小read-only replica数量。

Redis主从异步复制,从read-only replica中可能读到旧的数据,应用读写拆散须要业务能够容忍肯定水平的数据不统一,后续将会给客户更灵便的配置和更大的自在,例如配置能够容忍的最大延迟时间。

作者:小酷爱
起源:juejin.cn/post/6955355686108659726

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元

阿里云限时活动-1核2G-1M带宽-40-100G ,特惠价87.12元/年(原价1234.2元/年,可以直接买3年),速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

You may also like...

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据