X-Pipe

Redis 多数据中心复制管理系统
授权协议 Apache
开发语言 Java
所属分类 数据库相关、 数据库管理工具
软件类型 开源软件
地区 国产
投 递 者 郗浩
操作系统 跨平台
开源组织 携程
适用人群 未知
 软件概览

X-Pipe 是由携程框架部门研发的 Redis 多数据中心复制管理系统。。基于 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 状态,并对异常状态进行纠正。

Redis 数据复制问题

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

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

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

  • 相关: 《Postgresql源码(40)Latch的原理分析和应用场景》 《Postgresql源码(67)LWLock锁的内存结构与初始化》 self-pipe trick 1 问题在哪里 当你在使用io multiplexor函数时,例如select,有没有考虑过如果收到信号会发生什么? RETURN VALUE On success, select() and pselect

  •     具体实现步骤如下:(参考http://www.cnblogs.com/ivictor/p/5446503.html) 1. 新建一个文本文件redis_commands.txt,包含redis命令 SET Key0 Value0 SET Key1 Value1 ... SET KeyN ValueN 如果有了原始数据,其实构造这个文件并不难,譬如shell,python都可以 #!/usr

  • 一、概述 qemu pipe也是一个虚拟设备,是一个通用的虚拟设备,用于提供guest os和emulator通信的功能,类似于一个抽象的通信层,这样就不用写很多虚拟设备了。 之前在guest os中有个qemud进程,也是干这个事的,使用虚拟设备ttyS1提供guest os和emulator通信的功能,速度比较慢,已被pipe所替代。 看本篇之前,必须看完第一篇;看完本篇,然后看第三篇,这两个

  • 关于实时视频传输,业界已经有非常多成熟方案,分别应用在不同需求场景。本文介绍一种基于 HTTP ,非常简单、易理解的方案,实用性不强,但有助于理解 HTTP 协议。 从摄像头读取视频帧 node 的硬件操作能力偏弱,运行时本身并没有提供太多硬件接口,所以要调用硬件设备需要找到合适的库。 有许多工具可以实现从摄像头读取视频流,简单起见,我们选用了比较通用的框架: OpenCV,这是一个 c++ 写的

  • goldfish_pipe为在平台总线上的一个misc类型设备 下来说一下goldfish_pipe的工作原理 首先该硬件设备要完成的功能是一个双向管道 从用户层的角度来看设备实现的功能如下 1 打开管道 2 写入数据 3 读取数据 设备支持的寄存器和功能如下 PIPE_REG_COMMAND 用于通知硬件用户要执行的操作类型 PIPE_REG_STATUS 返回用户发起操作的执行结果 PIPE_

 相关资料
  • 我在和之间具有双向多对多关系。在的帮助下创建两个实体,甚至创建它们的子实体都是简单明了的。 和都可以在的帮助下轻松地自动持久化,如下所示: 然而...更新会导致异常: 我尝试修改的以包括、和/或,但未成功。我们怎么绕过这件事?

  • 主要内容:什么是数据库,数据库管理系统,DBMS的特征,DBMS的优点,DBMS的缺点,学习前提条件,面向读者,问题反馈DBMS教程提供了数据库的基本和高级概念。 我们的DBMS教程专为初学者和专业人士设计。数据库管理系统是用于管理数据库的软件。 DBMS教程包括DBMS的所有主题,如介绍,ER模型,键,关系模型,连接操作,SQL,函数依赖,事务,并发控制等。 什么是数据库 数据库是相互关联数据的集合,用于有效地检索,插入和删除数据。 它还用于以表格,模式,视图和报告等形式组织数据。 例如: 学

  • 本文向大家介绍数据库管理系统的优势,包括了数据库管理系统的优势的使用技巧和注意事项,需要的朋友参考一下 数据库管理系统(DBMS)定义为允许用户定义,创建,维护和控制对数据库访问的软件系统。DBMS使最终用户可以创建,读取,更新和删除数据库中的数据。它是程序和数据之间的一层。 与基于文件的数据管理系统相比,数据库管理系统具有许多优势。这些优点中的一些在下面给出- 减少数据冗余 基于文件的数据管理系

  • 我目前正在尝试让hazelcast管理中心在我的mac上本地运行,我收到了一个错误通知,就是这个: 运行后: 在根文件夹中。 如果需要,我可以提供更多信息,我对Hazelcast有点陌生,我正在努力让它正常工作,这样我就可以使用它与Zeebe工作流引擎结合。任何帮助都将是巨大的,任何对hazelcast的见解也是如此,因为它对我来说是一项新技术。提前感谢!

  • 本文向大家介绍基于文件的数据管理系统,包括了基于文件的数据管理系统的使用技巧和注意事项,需要的朋友参考一下 用于组织和维护数据文件的系统称为基于文件的数据系统。这些文件系统用于处理单个或多个文件,效率不高。  功能性 基于文件的数据管理系统的功能如下- 基于文件的系统有助于任何用户的基本数据管理。 基于文件的系统中存储的数据应保持一致。在基于文件的系统中完成的任何事务都不应更改一致性属性。  基于

  • 本文向大家介绍数据库管理系统的局限性,包括了数据库管理系统的局限性的使用技巧和注意事项,需要的朋友参考一下 与基于文件的管理系统相比,数据库管理系统非常有用。但是,它确实有一些缺点。其中一些如下- 更昂贵 创建和管理数据库的成本很高。数据库需要昂贵的软件和硬件。还需要训练有素的人员来处理数据库,并且数据库也需要连续维护。所有这些最终使数据库成为一项相当昂贵的冒险。 高复杂度 数据库管理系统非常复杂

  • 1.5.1. 什么是MaxDB? 1.5.2. MaxDB的历史 1.5.3. MaxDB的特性 1.5.4. 许可和支持 1.5.5. MaxDB和MySQL之间的特性差异 1.5.6. MaxDB和MySQL之间的协同性 1.5.7. 与MaxDB有关的链接 MaxDB是一种大型高效的企业数据库。数据库管理通过了SAP认证。 MaxDB是数据库管理系统的新名称,以前称为SAP DB。2003年

  • 1.4.1. MySQL的历史 1.4.2. MySQL的的主要特性 1.4.3. MySQL稳定性 1.4.4. MySQL表最大能达到多少 1.4.5. 2000年兼容性 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发、发布并支持的。MySQL AB是由多名MySQL开发人创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业