阿里云Redis数据库技术解析

阿里云Redis数据库技术解析

ID:36204837

大小:948.22 KB

页数:8页

时间:2019-05-07

阿里云Redis数据库技术解析_第1页
阿里云Redis数据库技术解析_第2页
阿里云Redis数据库技术解析_第3页
阿里云Redis数据库技术解析_第4页
阿里云Redis数据库技术解析_第5页
资源描述:

《阿里云Redis数据库技术解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、阿里云Redis数据库技术解析云栖社区微信号yunqiinsight功能介绍云栖社区是由阿里云负责运营、阿里巴巴技术协会和阿里巴巴集团各技术团队提供内容支持的开放式技术社区。8背景目前的阿里云redis不管主从版还是集群规格,slave作为备库不对外提供服务,只有在发生HA,slave提升为master后才承担读写。这种架构读写请求都在master上完成,一致性较高,但性能受到master数量的限制。经常有用户数据较少,但因为流量或者并发太高而不得不升级到更大的集群规格。为满足读多写少的业务场景,最大化节约用户成本,阿里云redis推出了读写分离规格,为用户提供透明

2、、高可用、高性能、高灵活的读写分离服务。架构目前的redis集群模式有redis-proxy,master,slave,HA等几个角色,在读写分离中,新增readonlyslave角色承担读流量,slave作为热备不提供服务,架构上保持对现有集群规格的兼容性。redis-proxy按权重将读写请求转发到master或者某个readonlyslave上;HA负责监控DB节点的健康状态,异常时发起主从切换或重搭readonlyslave,并更新路由。一般来说,根据master和readonlyslave的数据同步方式,可以有两种架构:星型复制,链式复制。星型复制8星型复

3、制就是将所有的readonlyslave直接和master保持同步,每个readonlyslave之间相互独立,任何一个节点异常不影响到其他节点,同时因为复制链比较短,readonlyslave上的复制延迟比较小。redis是单进程单线程模型,主从之间的数据复制也在主线程中处理,readonlyslave数量越多,数据同步对master的cpu消耗就越严重,集群的写入性能会随着readonlyslave的增加而降低。此外,星型架构会让master的出口带宽随着readonlyslave的增加而成倍增长。master上较高的CPU和网络负载又会抵消掉星型复制延迟较低的

4、优势。可以看出,星型复制架构会带来比较严重的扩展问题,整个集群的性能会受限于master。8链式复制链式复制将所有的readonlyslave组织成一个复制链,如下图所示,master只需要将数据同步给slave和复制链上的第一个readonlyslave。链式复制解决了星型复制的扩展问题,理论上可以无限增加readonlyslave的数量,随着节点的增加整个集群的性能也可以基本上呈线性增长。链式复制的架构下,复制链越长,复制链末端的readonlyslave和master之间的同步延迟就越大,考虑到读写分离主要使用在对一致性要求不高的场景下,这个缺点一般可以接受。

5、但是如果复制链中的某个节点异常,会导致下游的所有节点数据都会大幅滞后,更加严重的是这可能带来全量同步,并且全量同步将一直传递到复制链的末端,这会对服务带来一定的影响,为了解决这个问题,读写分离的redis都使用阿里云优化后的binlog复制版本,最大程度的降低全量同步的概率。8结合上述的讨论和比较,redis的读写分离选择链式复制的架构。透明、兼容读写分离和普通集群规格一样,都使用了redis-proxy做请求转发,多shard时部分命令使用存在一定的限制,但从主从升级单分片读写分离,或者从集群升级到多分片的读写分离集群可以做到完全兼容。8在集群模式下,有部分命令使

6、用必须限制所有key在同一个slot中。用户和redis-proxy建立连接,redis-proxy会识别出客户端连接发送过来的请求是读还是写,然后按照权重作负载均衡,将请求转发到后端不同的DB节点中,写请求转发给master,读操作转发给readonlyslave(master默认也提供读,可以通过权重控制)。用户只需要购买读写分离规格的实例,直接使用任何客户端即可直接使用,业务不用做任何修改就可以开始享受读写分离服务带来的巨大性能提升,接入成本几乎为0。高可用高可用模块(HA)监控所有DB节点的健康状态,为整个实例的可用性保驾护航,master宕机时自动切换到新

7、主。如果某个readonlyslave宕机,HA也能及时感知,然后重搭一个新的readonlyslave,下线宕机节点。8除HA之外,redis-proxy也能实时感知每个readonlyslave的状态。在某个readonlyslave异常期间,redis-proxy会自动降低这个节点的权重,如果发现某个readonlyslave连续失败超过一定次数以后,会暂时屏蔽异常节点,直到异常消失以后才会恢复其正常权重。redis-proxy和HA一起做到尽量减少业务对后端异常的感知,提高服务可用性。性能对于读多写少的业务场景,直接使用集群版本往往不是最合适的方案,现在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。