当前位置:文档之家› 多源异构数据库之间的实时同步复制技术

多源异构数据库之间的实时同步复制技术


industry
ቤተ መጻሕፍቲ ባይዱ
刘 鹏 1 李宏敏 2 程 清 3 刘镇京 4
1. 中国电力科学研究院有限公司;2. 北京国电通网络技术有限公司;3. 国网浙江省 电力有限公司信息通信分公司;4. 国网山东成武县供电公司
point
影响力
行业关联度
刘鹏(1987-)男,山东菏泽人,工程师,从事电力大数据平台 研发、大数据技术和电力系统自动化研究等;李宏敏(1988-)女, 河北定州人,工程师,从事电力大数据平台研发;程清(1989-) 男,河南安阳人,工程师,从事电网营销信息技术研究;刘镇京 (1980-)男,山东菏泽人,助理工程师,从事电网营销领域研究。
为了避免由于服务器宕机或出现其他意外导致消费者收 到 Queue 中的消息,却没有处理完成,从而丢失消息的情况, RabbitMQ 采用消息回执(Message acknowledgment) 机制,要求消费者在消费完消息后发送回执,RabbitMQ 收 到回执后才将该消息从 Queue 中移除;否则 RabbitMQ 会 重发消息或者将消息发送给其他消费者进行处理。
目前数据库同步复制主要通过 Oracle Golden Gate(以 下简称 OGG)实现。OGG 是一款结构化数据复制软件, 更改策略为捕捉日志变化。OGG 首先解析源数据库归档日 志或在线日志取得数据的增删改状态,之后在目标数据库中 执行这些变化,从而实现数据库源端与目标端的同步。文献 采用传统的 OGG 同步复制模式,完成异构数据库的同步复 制。由于在数据量极大的情况下,OGG 目标端向目标数据 库传递的消息队列(Message Queue,MQ)会影响数据 复制的效率和可靠度,我们考虑引入额外的 MQ 处理机制。 对于消息队列的处理,文献提出了基于 Redis 的方案,文 献提出了基于 Kafka 的方案,文献提出了基于 RabbitMQ 的 方 案。 通 过 对 三 种 消 息 队 列 系 统 的 比 较, 可 以 得 知, RabbitMQ 在消息持久性、投递确认、发布者证实和高可用 性等方面综合实力较强。因此,本文提出一种基于 OGG 和 RabbitMQ 的多源异构数据库同步复制的方法,以消息队列
CHINA SCIENCE AND TECHNOLOGY INFORMATION Aug.2018·中国科技信息 2018 年第 16 期
61 万~ 200 万◎
DOI:10.3969/j.issn.1001- 8972.2018.16.033
可实现度
可替代度
行业曲线
link
appraisement
RabbitMQ 为基础,采用“生产者——消费者”模型的方式 对数据进行转发,可以极大限度的提高数据转发的效率和可 靠度,进而提升数据同步复制的效率和可靠度。
关于 RabbitMQ
信息技术的飞速发展导致数据规模极大增加,数据来源 及类型丰富多样,传统关系型数据库已无法满足大型企业和 系统的存储需求,越来越多的行业和系统的源数据还存储于 非关系型(NoSQL)数据库、大规模并行处理(Massively Parallel Processor,MPP)数据库中。为了增强对数据库 的集中管理,提高数据库系统的响应速度和安全性,多源异 构数据库的实时同步复制成为我们研究的重点。
运行机制
一个完整的消息传递需要生产者(Producer)、消息 队 列(Queue)、 消 费 者(Consumer) 三 者 的 参 与。 生 产者制造消息并将其投递到队列中,消费者从队列中获取 消息并最终消费。RabbitMQ 对存储于队列中的消息进行
图 1 RabbitMQ 消息处理机制
-91-
基本概念
RabbitMQ 是服务器端以 Erlang 语言编写的开源消息 队列,基于高级消息队列协议(AMQP)实现。RabbitMQ 支 持 各 种 客 户 端, 如:ActionScript,.NET,Python, PHP,Ruby,XMPP,C,Java,JMS,STOMP 等。 RabbitMQ 可 担 任 消 息 中 间 件, 用 于 在 分 布 式 系 统 中 存 储 和 转 发 消 息, 对 负 载 均 衡 有 很 好 的 支 持。 除 此 之 外, RabbitMQ 还具有易用性,可扩展性和高可用性。
调度和分配。不止一个消费者可以订阅相同的队列。当队列 拥有多个订阅者时,队列中的消息将进行平均分配。每个消 费者仅仅接收并处理发送给自身的消息,并非全部的消息。 RabbitMQ 消息处理机制如图 1 所示。
对于多个消费者同时订阅相同 Queue 中消息的情况, 如果每个消息的处理时间不同,可能会导致消费者工作时间 不均衡,忙闲差距过大。若限制队列一次向 Consumer 发 送消息的数目,则可以避免某些 Consumer 长时间“清闲” 的状态。RabbitMQ 为每个消费者设置了变量 prefetch,当 消费者处理完所接收的消息后,队列会重新发送与 prefetch 数目相等的消息。RabbitMQprefetch count 机制如图 2 所 示。
2018-16最终.indd 91
2018/8/9 15:46:19
◎ 61 万~ 200 万
中国科技信息 2018 年第 16 期·CHINA SCIENCE AND TECHNOLOGY INFORMATION Aug.2018
图 2 RabbitMQprefetch count 机制
图 3 流程图
本文针对多源异构数据库之间的实时同步复 制问题,提出基于 OGG 和 RabbitMQ 的多源异 构数据库同步复制的解决方案。在领域起到引起 对 MPP 数据库及非关系型数据库消息队列处理 关注的作用。
如付诸现实将提高数据转发的效率和可靠度。
真实度
多源异构数据库之间的实时同步复制技术
针对多源异构数据库的实时同步复制问题,提出一种基于 OGG 和 RabbitMQ 的多源异构数据库同步复制的方法。在传统的 OGG 同步复 制模式中引入 RabbitMQ,采用"生产者——消费者"模型的方式对数 据进行转发。RabbitMQ 对非关系型数据库或 MPP 数据库端消息队列 进行处理,从而提高数据转发的效率和可靠度。
相关主题