X-Pipe 是由携程框架部门研发的 Redis 多数据中心复制管理系统。。基于 Redis 的 Master-Slave 复制协议,实现低延时、高可用的 Redis 多数据中心复制,并且提供一键机房切换,复制监控、异常报警等功能。
Redis 在携程内部得到了广泛的使用,根据客户端数据统计,整个携程全部 Redis 的读写请求在每秒 200W,其中写请求约 10W,很多业务甚至会将 Redis 当成内存数据库使用。这样,就对 Redis 多数据中心提出了很大的需求,一是为了提升可用性,解决数据中心 DR(Disaster Recovery) 问题,二是提升访问性能,每个数据中心可以读取当前数据中心的数据,无需跨机房读数据,在这样的需求下,XPipe 应运而生 。
为了方便描述,后面用 DC 代表数据中心 (Data Center)。
Console 用来管理多机房的元信息数据,同时提供用户界面,供用户进行配置和 DR 切换等操作。
Keeper 负责缓存 Redis 操作日志,并对跨机房传输进行压缩、加密等处理。
Meta Server 管理单机房内的所有 keeper 状态,并对异常状态进行纠正。
多数据中心首先要解决的是数据复制问题,即数据如何从一个 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开发人创办的一家商业公司。它是一家第二代开放源码公司,结合了开放源码价值取向、方法和成功的商业