一文揭秘阿里云Redis全球多活产品
简介
Redis全球多活产品是阿里云自研、基于云数据库Redis版(ApsaraDB for Redis)、100%兼容 Redis 协议的多活数据库系统。通过数据同步通道,把多个Redis实例组网成1个逻辑上的 Redis 多活实例,多活实例内的所有实例均可读写并保持实时数据同步。数据同步通道通过内网打通,具有高可靠、高安全,低延迟的特性。子实例间通过CRDT(Conflict-free Replicated Data Type)机制检测并解决数据冲突,保障数据最终一致性。Redis全球多活产品轻松支持异地多个站点同时对外提供服务的业务场景,助力企业快速复制阿里巴巴异地多活架构。
目前阿里云Redis全球多活产品已开放售卖,相关产品介绍详见https://promotion.aliyun.com/ntms/act/redis-geo-replication.html。
产品架构
Redis多活实例由三部分构成:
- 云数据库 Redis 版实例
- 同步通道
- 通道管理器
云数据库 Redis 版实例
原生内核的日志机制比较简单,不足以支撑多活相互复制数据,我们对aof日志改造为binlog,把每一条aof日志扩展为oplog:
- 每条oplog包含一个全局唯一id(类似mysql的GTID),id包含两部分, 一部分是Redis实例id,用于解决循环同步的问题,第二部分是递增数字,保证有序和唯一。
- oplog包含逻辑时钟信息,在目标端Redis 执行merge时,使用CRDT策略解决数据一致性问题。
通道
每两个redis实例间有负责同步oplog的双向通道,同步过程根据oplog gtid保证exactly once语义,并且能处理 上下游Redis实例异常(主备切换、备库重搭)。
通道管理器
负责通道生命周期管理
产品优势
高可用
- 同步支持断点续传,最高可以容忍天级别的隔断。
- 自适应处理上下游 Redis 子实例发生HA(主备切换)的情况。
高性能
多活同步的过程是异步的,对正常的Redis读写没有性能影响。
高吞吐:标准版单向同步通道10万tps,集群版随 Redis 节点数线性扩展。
低延迟:1个洲际内地域间数据同步延迟在百毫秒级,跨洲际地域间延迟在1秒级。
数据最终一致
在多活场景中, 由于存在多个实例且每个实例都可读写,则在同步过程中,一定会遇到数据一致性问题。如下图,同时在redis实例A上写入key value_A,在redis实例B上写入key value_B,互相同步之后很可能实例A上key的值为value_B,而实例B上key的值为value_A,这种不一致可能是业务上是不能接受的。
我们基于CRDT(Conflict-free Replicated Data Type)的方案,对redis内核进行针对性改造,实现了string、counter、hash、set、zset、hyperloglog、geo几种数据类型的最终一致性.
功能丰富
- 多活支持Redis标准版,集群版和读写分离版。
- 在多活同步过程中支持 Redis 子实例规格变配。
- 支持新增和删除redis子实例。
应用场景
Redis 多活产品主要应用于异地多活业务架构的存储层,业务层设计可以参考文档《数据库异地多活解决方案》。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Work Like Alibaba|6大招式打造高效研发效能生态
导读:本期Work like alibaba系列课程,我们邀请到了阿里巴巴CBU技术部的高级技术专家施翔为我们带来的如何打造高效研发效能生态的团队。技术负责人、CTO、CEO、开发者们看过来~ 研发效能一直是业务不断发展背景下技术团队的痛点,同时又是很难去定义和衡量的东西。作者从阿里研发生态发展过程中所经历的困难挑战和应对方案中抽丝拨茧,抽象出一套方法。希望可以帮助碰到同样问题或者希望可以从当前的研发模式中获得突破的技术Leader提供更多的思路。 演讲嘉宾 施翔(傲野) 阿里巴巴高级技术专家 毕业于南昌大学,现就职于阿里巴巴CBU技术部,担任高级专家职务,负责质量、稳定性和Devops团队。曾就职于ZTE、支付宝公司,在系统高可用、测试工具研发、研发效率提升等方面有着丰富的经验。 直播时间 8月30日17:00-18:00 直播内容 我们对于研发
- 下一篇
[搬运]什么叫幂等性?
看到了一篇讲幂等性的文章,我认为把幂等性说得十分清楚。如果你像我一样对幂等性还有困惑,可以仔细看下这篇文章。原文地址:https://www.restapitutorial.com/lessons/idempotency.html 【英文原文】 Idempotence is a funky word that often hooks people. Idempotence is sometimes a confusing concept, at least from the academic definition. From a RESTful service standpoint, for an operation (or service call) to be idempotent, clients can make that sa
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范