开发者社区> 云痕> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

一文揭秘阿里云Redis全球多活产品

简介: Redis全球多活产品是阿里云自研、基于云数据库Redis版(ApsaraDB for Redis)、100%兼容 Redis 协议的多活数据库系统。通过数据同步通道,把多个Redis实例组网成1个逻辑上的 Redis 多活实例,多活实例内的所有实例均可读写并保持实时数据同步。
+关注继续查看

简介

Redis全球多活产品是阿里云自研、基于云数据库Redis版(ApsaraDB for Redis)、100%兼容 Redis 协议的多活数据库系统。通过数据同步通道,把多个Redis实例组网成1个逻辑上的 Redis 多活实例,多活实例内的所有实例均可读写并保持实时数据同步。数据同步通道通过内网打通,具有高可靠、高安全,低延迟的特性。子实例间通过CRDT(Conflict-free Replicated Data Type)机制检测并解决数据冲突,保障数据最终一致性。Redis全球多活产品轻松支持异地多个站点同时对外提供服务的业务场景,助力企业快速复制阿里巴巴异地多活架构。
image

目前阿里云Redis全球多活产品已开放售卖,相关产品介绍详见https://promotion.aliyun.com/ntms/act/redis-geo-replication.html

产品架构

Redis多活实例由三部分构成:

  • 云数据库 Redis 版实例
  • 同步通道
  • 通道管理器
    image

云数据库 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,这种不一致可能是业务上是不能接受的。
image

我们基于CRDT(Conflict-free Replicated Data Type)的方案,对redis内核进行针对性改造,实现了string、counter、hash、set、zset、hyperloglog、geo几种数据类型的最终一致性.

功能丰富

  • 多活支持Redis标准版,集群版和读写分离版。
  • 在多活同步过程中支持 Redis 子实例规格变配。
  • 支持新增和删除redis子实例。

应用场景

Redis 多活产品主要应用于异地多活业务架构的存储层,业务层设计可以参考文档《数据库异地多活解决方案》。
image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Mac PHP安装Redis扩展
php安装redis的扩展 采用pecl命令进行安装; pecl命令,在使用brew 安装php时,已经为我们安装上了,这里我们直接使用即可。 我们先进入php的bin目录看下命令是否存在,对应路径如下: cd /opt/homebrew/Cellar/php@7.3/7.3.32 这里的7.3为我通过brew install [php@7.3]安装的php具体版本号,大家可以通过ls命令查看文件夹下是否存在pecl命令
228 0
阿里云服务器(centos7.3)上安装jdk、tomcat、mysql、redis
平时我们敲的项目,只能在本地浏览,不论项目写得怎么样只有自己看得到,只有发布到了云服务器,别人才能访问得到。学习之路就是这样,当别人能访问自己的项目时,会更有成就感,所以接下来就一起看看阿里云服务器的购买以及各种环境的安装。
186 0
Redis----使用Docker安装Redis
Redis----使用Docker安装Redis
124 0
Redis安装与配置(一)
Redis安装与配置(一)
67 0
Redis安装与配置(二)
Redis安装与配置(二)
36 0
分布式缓存中间件-Redis介绍与安装
分布式缓存中间件-Redis介绍与安装
62 0
Docker安装Redis并配置文件启动
之前已经写过Redis分别在Linux、Windows上安装部署,及其集群环境搭建。这次写一篇Docker容器部署Redis的教程,配置文件方式启动服务。
463 0
PassJava 开源(十二)之 安装 redis
PassJava 开源(十二)之 安装 redis
53 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
阿里云Redis全球多活产品
立即下载
阿里云Redis技术架构体系
立即下载
阿里云Redis技术架构演进
立即下载