CN111881214A - 一种基于cmsp的drdb数据库数据同步的方法 - Google Patents

一种基于cmsp的drdb数据库数据同步的方法 Download PDF

Info

Publication number
CN111881214A
CN111881214A CN202010741669.1A CN202010741669A CN111881214A CN 111881214 A CN111881214 A CN 111881214A CN 202010741669 A CN202010741669 A CN 202010741669A CN 111881214 A CN111881214 A CN 111881214A
Authority
CN
China
Prior art keywords
message
data
task
information
writer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010741669.1A
Other languages
English (en)
Other versions
CN111881214B (zh
Inventor
张明
孙思清
李朝铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202010741669.1A priority Critical patent/CN111881214B/zh
Publication of CN111881214A publication Critical patent/CN111881214A/zh
Application granted granted Critical
Publication of CN111881214B publication Critical patent/CN111881214B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于CMSP的DRDB数据库数据同步的方法,属于数据库同步技术领域,本发明通过抽象相关逻辑组件,职责分离,定义消息格式与模型,实现其他数据库到DRBD的数据库元信息、记录消息的同步,在较小的牺牲下,兼顾全量同步的吞吐量与增量同步的实效性。

Description

一种基于CMSP的DRDB数据库数据同步的方法
技术领域
本发明涉及包括异源数据库数据类型的自动映射,类型转换,消息构建分发同步方法,组件间协定等技术,尤其涉及一种基于CMSP的DRDB数据库数据同步的方法。
背景技术
现在主要的数据库同步手段包括离线同步与在线同步两种。离线同步主要是采用持久化为中间文件的方式,具有吞吐量大、通用性强的特点;在线同步一般对于同种数据库之间采用私有协议实现主备,主从副本等方案实现,具有实时性强,性能高等优势。但是两者或多或少的也存在其相应的缺陷。
离线同步
数据需要周期性持久化为中间文件,不适用于实时性要求较高的场景。虽然可以通过定制持久化时间切片提高实时性,但是切片时间难以确定,切片过大,实时性难以保证。切片过小性能无法保证。
对于大多数离线方案,只能实现数据的全量备份,实现增量数据的获取。
通过中间文件同步的方式,无法解决不同数据库间,内建类型的差异。存在额外信息丢失的问题,例如时区信息、字段注解等。对于原数据库的附加信息需要人工干预,自动化程度较低。
在线同步
在线同步主要分为两类,一种采用私有协议进行同步,无法适用于其他种类数据库,通用性不强。一般而言,此种方式的同步,采用的是全副本同步,即针对的是整个库或者整个表作为颗粒度,无法具体到具体表的相关字段。
另一种在线模式,数据采集端与数据导入端统一集成在一个程序内,整个数据在程序内部进行流转,虽然避免了数据在进程间的交换但灵活性较低,且开发技术具有局限性,要求所有实现技术栈统一。同时,一体性的架构,决定了此种模式,对于数据源与数据目的无法兼顾,在某些应用场景下,应用受限。
发明内容
为了解决以上技术问题,本发明提供了一种基于CMSP的DRDB数据库数据同步的方法,实现其他多源数据库到NewSQL的数据同步,尽可能自动实现数据的构建同步转化操作,且保留尽可能多的原始信息。兼顾全量同步的高吞吐与增量同步的实时性,同时确保方案的通用性与可扩展性,实现数据的采集读取端与数据的消费写入端的模块解耦,使相关模块尽可能靠近源端和目的端,适用某些特殊场景需求。
本发明的技术方案是:
一种基于CMSP的DRDB数据库数据同步系统,
分为三个模块,
作为数据采集端的Reader,即从原始数据源获取信息的生产者;
作为消息投递的Transfer,即负责中间消息的投递者,
作为消息的最终消费者的Writer,即发挥数据的转换处理、任务构建调度执行的目标库写入者。
进一步的,
Reader与Writer之间通过消息协议进行通信,包括用于结构化数据的元信息、控制信息、消息信息的负载。
采用CMSP作为消息转发投递的Transfer;
Reader与Writer作为一个统一的抽象称作Processor,即作为数据的处理单元。
Reader与Writer可以通过进程间内建队列进行通信;
通过定义统一消息交换格式,用于负载相关元信息、控制信息以及数据信息。
进一步的,
消息负载针对数据库的同步场景,主要提供两种事件消息的抽象,即DDL事件,以及DML事件;DDL主要负责传递表元信息,负载相关的表操作包括删除、创建、变更事件;DML主要负责负载数据记录的变更;DML事件通过元信息标签与DDL 事件绑定;编解码单元综合相关源信息与DML记录负载,解析出具体的数据库记录负载,即通常的增、删、改操作记录;将DML进一步划分为两种任务,一种是可并发操作记录,主要用于基准数据的同步,类似离线同步的场景,数据以一种流式的消息在源和目的之间进行传输;非并发消息主要针对的是增量数据的变更。
对于Reader经由Transfer到达Writer的整个流程,DDL负载的元信息只在必要场景下需要提供,即首次启动信息流,信息流变更。
Reader需要保证DML消息负载的元信息标签对应的元信息先于DML事件被发送。
消息交换格式的元信息,主要包裹原始库字段名、字段类型描述、字段属性、时区、编码。
进一步的,
在Writer端使用正则文本映射的方式;针对不同数据库提供默认的映射规则,同时用户可以在不变更程序的前提下,对数据类型提供针对性定制。
消息的流转到达Writer必然经过如下流程:
1)消息读取
2)解码
3)处理执行
4)执行结果反馈
Writer服务主要分为如下功能模块:
1)消息源代理
2)编解码单元
3)任务构建单元
4)任务执行器
针对所有的Transfer相关操作,独立到单独的处理线程负责;使用PULL模式从Transfer获取数据。
为每个消息流提供两个有界预处理队列,一个面向IO线程,另一个面向处理线程,IO线程先将数据预读取到本侧的有界队列中,处理线程从本侧队列中取数据,当处理端处理数据为空时,直接交换尝试获取锁,交换两个预处理队列即可。
进一步的,
采用无锁方式实现队列交换操作的互斥线程安全;IO线程内,将每个消息流抽象为一个任务,通过协程在用户层进行调度,降低上下文切换的开销,同时针对每个消息处理流的处理快慢,动态调整对应信息流调度的优先级,优化调度。
编解码单元由处理线程根据消息进行事件驱动;编解码单元通过内部有界队列,对合法的消息发送给任务构建单元;
任务构建单元,主要负责根据编解码单元解析的消息负载构建相关的任务对象,任务根据对应的消息负载,初始化具体的内部状态运行逻辑;根据相关消息的并发标记位,任务构建单元通过引入任务并发组的概念,对可并发不可并发任务进行隔离,并发组在主要的实现方式是通过信号通知构建WaitGroup;
任务执行器本身作为无状态的服务长久运行,任务构建器通过有界队列向任务执行器分发任务。
本发明的有益效果是
本发明技术实现方案通过引入数据映射模型的概念,通过自定义消息结构,抽象消息分类达到其他异源数据库到DRDB的数据同步功能,最大程度的保留原始数据的附加信息,同时通过定制映射模型,针对不同数据库内建类型提供最优匹配,提升空间效率与执行效率。通过抽象Reader、Transfer、Writer组件的功能, 隔离不同数据库的差异,简化了实现逻辑,提高了系统的灵活性。本方案在较小的开销下,兼顾全量同步的吞吐量的同时,也提升了增量同步的时效性。Writer 组件消息分发流程内部逻辑的构建组织逻辑,通过内部组件的职能划分,相关技术细节定义约束实现,进一步提升了系统的性能。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
将整个数据抽象为拆分为三个模块,作为数据采集端的Reader,即从原始数据源获取信息的生产者。作为消息投递的Transfer,即负责中间消息的投递者,
以及作为消息的最终消费者的Writer,即发挥数据的转换处理、任务构建调度执行的目标库写入者。
Reader与Writer之间通过特定的消息协议进行通信,包括用于结构化数据的元信息、控制信息、消息信息等类型的负载。由于消息中间件天然的消息的有序性,且在压缩、加密、错误重传、限流等方面天然的模块解耦特性,在分布式部署方案中采用CMSP作为消息转发投递的Transfer,降低Reader与Writer端的复杂性。Reader与Writer可以作为一个统一的抽象称作Processor,即作为数据的处理单元,在某些场景下,Reader与Writer可以通过进程间内建队列进行通信,和大多数在线同步方式相同。
此方案中,主要重点说明基于CMSP的构建同步方式以及相关的Writer服务端实现逻辑。
为了消弭不同数据库间数据类型的差异,打通数据库间通信的壁垒,通过定义统一消息交换格式,用于负载相关元信息、控制信息以及数据信息。
消息负载针对数据库的同步场景,主要提供两种事件消息的抽象,即DDL事件,以及DML事件。DDL主要负责传递表元信息,负载相关的表操作包括删除、创建、变更事件。DML主要负责负载数据记录的变更。DML事件通过元信息标签与 DDL事件绑定。编解码单元综合相关源信息与DML记录负载,解析出具体的数据库记录负载,即通常的增、删、改操作记录。为了提高全量同步的吞吐量与入库性能,DML主要可以进一步划分为两种任务,一种是可并发操作记录,主要用于基准数据的同步,类似离线同步的场景,但是中间减少了数据持久化的滞后性,数据以一种流式的消息在源和目的之间进行传输。非并发消息主要针对的是增量数据的变更,对于基于消息触发,副本回放的原理实现的增量Reader来说,可以实现很高的实时性,同时为Writer执行操作提供了顺序的制约与保证。
对于Reader经由Transfer到达Writer的整个流程,DDL负载的元信息只在必要场景下需要提供,例如首次启动信息流,信息流变更,目的是减少不必要的信息冗余,提高有效消息的比重,Reader需要保证DML消息负载的元信息标签对应的元信息先于DML事件被发送,以保证整个流程的有效性。
消息交换格式的元信息,主要包裹原始库字段名、字段类型描述、字段属性(主键、可空、注解等)、时区、编码等。
大多数结构化数据同步场景,都不提供表结构的自动创建功能,这样无疑会带来很多额外的工作,在大量同步的场景下,这种开销花费是难以忽视的,为此在Writer端引入了类型映射模型的概念,用来提供一种数据转换的通用模型,由于表构建操作非程序热点逻辑,这里使用正则文本映射的方式来实现。针对不同数据库提供默认的映射规则,同时用户可以在不变更程序的前提下,对数据类型提供针对性定制。通常数据库都会根据精度的不同,存储范围的不同,特化具体的数据类型,默认映射模型确保在不丢失数据、精度的前提下,尽可能选择最适合的存储类型,提高底层数据库数据存储的时间空间开销,同时保证数据使用的便利性。
消息的流转到达Writer必然经过如下流程:
·消息读取
·解码
·处理执行
·执行结果反馈
Writer服务主要分为如下功能模块:
·消息源代理
·编解码单元
·任务构建单元
·任务执行器
消息读取作为消息的输入源,同大多数IO场景一样,非CPU密集,所以针对所有的Transfer相关操作,独立到单独的处理线程负责。由于同步消息场景的特性,需要保证所有消息被有效执行,使用PULL模式从Transfer获取数据,避免由于生产者消费者之间速度不协调,造成的预缓存池膨胀问题降低复杂度。
对于每个消息流,为了降低锁争夺开销,为此为每个流提供两个有界预处理队列,一个面向IO线程,另一个面向处理线程,IO线程先将数据预读取到本侧的有界队列中,处理线程从本侧队列中取数据,大多数场景下,双方队列都无需进行加锁操作,当处理端处理数据为空时,直接交换尝试获取锁,交换两个预处理队列即可,减少数据的腾挪复制。取决于预处理队列大小,大多数情况下无需进行交换操作,这里为了进一步优化,采用无锁方式实现队列交换操作的互斥线程安全。为了降低无数据时CPU的占用与提高数据信息投递的实时性,IO线程内,将每个消息流抽象为一个任务,通过协程在用户层进行调度,降低上下文切换的开销,同时针对每个消息处理流的处理快慢,
动态调整对应信息流调度的优先级,优化调度。
解码单元作为消息处理流程的起点,起到校验数据合法性与提取映射数据作用。由于标准消息定义中,底层负载数据多数场景下,采用了直接映射的方式,所以对于字符串、二进制等开销较大的类型,无需构建临时对象。编解码单元由处理线程根据消息进行事件驱动。编解码单元通过内部有界队列,对合法的消息发送给任务构建单元。
任务构建单元,主要负责根据编解码单元解析的消息负载构建相关的任务对象,任务根据对应的消息负载,初始化具体的内部状态运行逻辑。根据相关消息的并发标记位,任务构建单元通过引入任务并发组的概念,对可并发不可并发任务进行隔离,并发组在主要的实现方式是通过信号通知构建WaitGroup。
任务执行器本身作为无状态的服务长久运行,任务构建器通过有界队列向任务执行器分发任务。任务执行器不仅对于单一流的并发任务起到了加速作用,同时对于不可并发的不同流任务也拥有并发加速作用。
以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种基于CMSP的DRDB数据库数据同步系统,其特征在于,
分为三个模块,
作为数据采集端的Reader,即从原始数据源获取信息的生产者;
作为消息投递的Transfer,即负责中间消息的投递者,
作为消息的最终消费者的Writer,即发挥数据的转换处理、任务构建调度执行的目标库写入者。
2.根据权利要求1所述的方法,其特征在于,
Reader与Writer之间通过消息协议进行通信,包括用于结构化数据的元信息、控制信息、消息信息的负载。
采用CMSP作为消息转发投递的Transfer;
Reader与Writer作为一个统一的抽象称作Processor,即作为数据的处理单元。
3.根据权利要求2所述的方法,其特征在于,
Reader与Writer可以通过进程间内建队列进行通信;
通过定义统一消息交换格式,用于负载相关元信息、控制信息以及数据信息。
4.根据权利要求3所述的方法,其特征在于,
消息负载针对数据库的同步场景,主要提供两种事件消息的抽象,即DDL事件,以及DML事件;DDL主要负责传递表元信息,负载相关的表操作包括删除、创建、变更事件;DML主要负责负载数据记录的变更;DML事件通过元信息标签与DDL事件绑定;编解码单元综合相关源信息与DML记录负载,解析出具体的数据库记录负载,即通常的增、删、改操作记录;将DML进一步划分为两种任务,一种是可并发操作记录,主要用于基准数据的同步,类似离线同步的场景,数据以一种流式的消息在源和目的之间进行传输;非并发消息主要针对的是增量数据的变更。
5.根据权利要求4所述的方法,其特征在于,
对于Reader经由Transfer到达Writer的整个流程,DDL负载的元信息只在必要场景下需要提供,即首次启动信息流,信息流变更;
Reader需要保证DML消息负载的元信息标签对应的元信息先于DML事件被发送。
6.根据权利要求5所述的方法,其特征在于,
消息交换格式的元信息,主要包裹原始库字段名、字段类型描述、字段属性、时区、编码。
7.根据权利要求5所述的方法,其特征在于,
在Writer端使用正则文本映射的方式;针对不同数据库提供默认的映射规则,同时用户可以在不变更程序的前提下,对数据类型提供针对性定制。
8.根据权利要求7所述的方法,其特征在于,
消息的流转到达Writer必然经过如下流程:
1)消息读取
2)解码
3)处理执行
4)执行结果反馈
Writer服务主要分为如下功能模块:
1)消息源代理
2)编解码单元
3)任务构建单元
4)任务执行器
针对所有的Transfer相关操作,独立到单独的处理线程负责;使用PULL模式从Transfer获取数据;
为每个消息流提供两个有界预处理队列,一个面向IO线程,另一个面向处理线程,IO线程先将数据预读取到本侧的有界队列中,处理线程从本侧队列中取数据,当处理端处理数据为空时,直接交换尝试获取锁,交换两个预处理队列即可。
9.根据权利要求8所述的方法,其特征在于,
采用无锁方式实现队列交换操作的互斥线程安全;IO线程内,将每个消息流抽象为一个任务,通过协程在用户层进行调度,降低上下文切换的开销,同时针对每个消息处理流的处理快慢,动态调整对应信息流调度的优先级,优化调度。
10.根据权利要求9所述的方法,其特征在于,
编解码单元由处理线程根据消息进行事件驱动;编解码单元通过内部有界队列,对合法的消息发送给任务构建单元;
任务构建单元,主要负责根据编解码单元解析的消息负载构建相关的任务对象,任务根据对应的消息负载,初始化具体的内部状态运行逻辑;根据相关消息的并发标记位,任务构建单元通过引入任务并发组的概念,对可并发不可并发任务进行隔离,并发组在主要的实现方式是通过信号通知构建WaitGroup;
任务执行器本身作为无状态的服务长久运行,任务构建器通过有界队列向任务执行器分发任务。
CN202010741669.1A 2020-07-29 2020-07-29 一种基于cmsp的drdb数据库数据同步的方法 Active CN111881214B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010741669.1A CN111881214B (zh) 2020-07-29 2020-07-29 一种基于cmsp的drdb数据库数据同步的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010741669.1A CN111881214B (zh) 2020-07-29 2020-07-29 一种基于cmsp的drdb数据库数据同步的方法

Publications (2)

Publication Number Publication Date
CN111881214A true CN111881214A (zh) 2020-11-03
CN111881214B CN111881214B (zh) 2024-04-16

Family

ID=73200946

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010741669.1A Active CN111881214B (zh) 2020-07-29 2020-07-29 一种基于cmsp的drdb数据库数据同步的方法

Country Status (1)

Country Link
CN (1) CN111881214B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114925140A (zh) * 2022-07-21 2022-08-19 中化现代农业有限公司 数据同步系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368362A (zh) * 2017-06-29 2017-11-21 上海阅文信息技术有限公司 一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统
WO2019047479A1 (zh) * 2017-09-08 2019-03-14 广东省建设信息中心 一种普适多源异构大规模数据同步系统
CN110377666A (zh) * 2019-07-26 2019-10-25 浪潮软件股份有限公司 基于cmsp消息中间件进行异源数据库间数据同步的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107368362A (zh) * 2017-06-29 2017-11-21 上海阅文信息技术有限公司 一种对于磁盘读写数据的多线程/多进程无锁处理方法及系统
WO2019047479A1 (zh) * 2017-09-08 2019-03-14 广东省建设信息中心 一种普适多源异构大规模数据同步系统
CN110377666A (zh) * 2019-07-26 2019-10-25 浪潮软件股份有限公司 基于cmsp消息中间件进行异源数据库间数据同步的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
崔伟;汪诗林;: "分布式系统中数据同步机制的研究与实现", 计算机工程与设计, no. 10 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114925140A (zh) * 2022-07-21 2022-08-19 中化现代农业有限公司 数据同步系统

Also Published As

Publication number Publication date
CN111881214B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
US8234296B1 (en) Method for distributed RDSMS
CN111400326B (zh) 一种智慧城市数据管理系统及其方法
Grover et al. Hadoop Application Architectures: Designing Real-World Big Data Applications
US7546284B1 (en) Virtual message persistence service
Cheriton et al. Understanding the limitations of causally and totally ordered communication
Zheng et al. PaxosStore: high-availability storage made practical in WeChat
CN110019240A (zh) 一种业务数据交互方法、装置及系统
US20040068479A1 (en) Exploiting asynchronous access to database operations
WO2013155752A1 (zh) 面向数据库与Hadoop混合平台的OLAP查询处理方法
CN106815338A (zh) 一种大数据的实时存储、处理和查询系统
EA005646B1 (ru) База данных с высокоскоростным не параллельным управлением
Peng et al. Implementation issues of a cloud computing platform.
CN112367354B (zh) 一种云边资源图智能调度系统及其调度方法
CN111881214B (zh) 一种基于cmsp的drdb数据库数据同步的方法
CN109347906B (zh) 一种数据传输方法、装置、与服务器
Goniwada et al. Cloud native architecture and design patterns
Younes et al. Integration challenges of pure operation-based crdts in redis
Chen et al. Towards low-latency big data infrastructure at sangfor
Zhang Reliable event messaging in big data enterprises: looking for the balance between producers and consumers
CN113641760A (zh) 数据同步方法及装置
Ray et al. Performance enhancement in big data handling
CN117742998B (zh) 一种面向计费采集数据转发的高性能队列方法及系统
Hao et al. Distributed Message Processing System Based for Internet of Things
CN117914891A (zh) 用于城市运管服平台的多源异构数据共享交换系统及方法
Pellegrino Pushing dynamic and ubiquitous event-based interactions in the Internet of services: a middleware for event clouds

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant