专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
OSC开源社区  ·  “我们为什么一定要投资中国” ·  昨天  
程序员小灰  ·  实习生上班摸鱼刷题,被开除了! ·  2 天前  
OSC开源社区  ·  直播预告|登Nature子刊!上海交大博士后 ... ·  1 周前  
51好读  ›  专栏  ›  OSC开源社区

携程开源 Redis 多数据中心复制管理系统 X-Pipe

OSC开源社区  · 公众号  · 程序员  · 2017-04-28 08:25

正文

点击图片报名上海、南京源创会 #


由携程框架部门研发的 Redis 多数据中心复制管理系统 X-Pipe 已于近日开源。基于 Redis 的 Master-Slave 复制协议,实现低延时、高可用的 Redis 多数据中心复制,并且提供一键机房切换,复制监控、异常报警等功能。


XPipe 解决什么问题


Redis 在携程内部得到了广泛的使用,根据客户端数据统计,整个携程全部 Redis 的读写请求在每秒 200W,其中写请求约 10W,很多业务甚至会将 Redis 当成内存数据库使用。这样,就对 Redis 多数据中心提出了很大的需求,一是为了提升可用性,解决数据中心 DR(Disaster Recovery) 问题,二是提升访问性能,每个数据中心可以读取当前数据中心的数据,无需跨机房读数据,在这样的需求下,XPipe 应运而生 。


为了方便描述,后面用 DC 代表数据中心 (Data Center)。


整体架构



Console 用来管理多机房的元信息数据,同时提供用户界面,供用户进行配置和 DR 切换等操作。

• Keeper 负责缓存 Redis 操作日志,并对跨机房传输进行压缩、加密等处理。

• Meta Server 管理单机房内的所有 keeper 状态,并对异常状态进行纠正。

具体实现原理和特性请查看官方文档

https://github.com/ctripcorp/x-pipe/blob/master/README.md


Redis 数据复制问题


多数据中心首先要解决的是数据复制问题,即数据如何从一个 DC 传输到另外一个 DC。我们决定采用伪 slave 的方案,即实现 Redis 协议,伪装成为 Redis slave,让 Redis master 推送数据至伪 slave。这个伪 slave,我们把它称为 keeper,如下图所示:


有了 keeper 之后,多数据中心之间的数据传输,可以通过 keeper 进行。keeper 将 Redis 日志数据缓存到磁盘,这样,可以缓存大量的日志数据(Redis 将数据缓存到内存 ring buffer,容量有限),当数据中心之间的网络出现较长时间异常时仍然可以续传日志数据。


Redis 协议不可更改,而 keeper 之间的数据传输协议却可以自定义。这样就可以进行压缩,以提升系统性能,节约传输成本;多个机房之间的数据传输往往需要通过公网进行,这样数据的安全性变得极为重要,keeper 之间的数据传输也可以加密,提升安全性。





推荐阅读

实用贴 | 适用于开发者的最佳火狐插件

12 个学习新的编程语言的方法

MyBatis 思维导图,让 MyBatis 不再难懂(一)

Java 的泛型擦除和运行时泛型信息获取

软件的复杂性:命名的艺术

点击“阅读原文”查看更多精彩内容