CN112434243B - 一种同步数据的方法、装置和计算机可读存储介质 - Google Patents

一种同步数据的方法、装置和计算机可读存储介质 Download PDF

Info

Publication number
CN112434243B
CN112434243B CN202011241082.0A CN202011241082A CN112434243B CN 112434243 B CN112434243 B CN 112434243B CN 202011241082 A CN202011241082 A CN 202011241082A CN 112434243 B CN112434243 B CN 112434243B
Authority
CN
China
Prior art keywords
data
user
target thread
middleware
database
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.)
Active
Application number
CN202011241082.0A
Other languages
English (en)
Other versions
CN112434243A (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.)
Hangzhou Xiaodian Technology Co ltd
Original Assignee
Hangzhou Xiaodian 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 Hangzhou Xiaodian Technology Co ltd filed Critical Hangzhou Xiaodian Technology Co ltd
Priority to CN202011241082.0A priority Critical patent/CN112434243B/zh
Publication of CN112434243A publication Critical patent/CN112434243A/zh
Application granted granted Critical
Publication of CN112434243B publication Critical patent/CN112434243B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • 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/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请涉及一种同步数据的方法、装置和计算机可读存储介质,其中,该方法通过获取目标线程的用户订阅状态;在该目标线程处于用户订阅的状态时,提取该目标线程中用户订阅的数据主题中的分区数据;对该分区数据进行解析,得到解析数据;根据路由配置关系,将该解析数据写入对应的下游数据库。本申请实现了上下游数据库的数据快速同步。

Description

一种同步数据的方法、装置和计算机可读存储介质
技术领域
本申请涉及计算机数据处理领域,特别是涉及一种同步数据的方法、装置和计算机可读存储介质。
背景技术
目前随着互联网的发展,通讯、购物、金融等服务行业公司的数据在每年呈现几何倍数增长,数据同步是内部一个非常重要的流程,网上服务行业对数据一致性及时效性要求极高,要求数据零丢失、且低时延。
在相关技术中,平台服务期间大量的交易数据信息在短时间内聚集,数据同步需要统一。上游数据库的全部或者部分库表中更新的数据不能任意路由到下游不同类型或者不同实例的数据库中的问题十分明显。相关技术是通过根据需求配置一套路由规则,即在操作同步的时候会决定哪些数据表或者数据库需要同步到下游数据库的库中,然而配置一套路由规则十分复杂且缓慢。
目前针对相关技术中,如何快速的实现上下游的数据库的数据同步,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种同步数据的方法、装置和计算机可读存储介质,以至少解决相关技术中如何快速的实现上下游的数据库的数据同步的问题。
第一方面,本申请实施例提供了一种同步数据的方法,包括:获取目标线程的用户订阅状态;在所述目标线程处于用户订阅的状态时,提取所述目标线程中用户订阅的数据主题中的分区数据;对所述分区数据进行解析,得到解析数据;根据路由配置关系,将所述解析数据写入对应的下游数据库。
在其中一些实施例中,所述对所述分区数据进行解析,得到解析数据,包括:循环解析所述分区数据,得到所述解析数据;其中,所述解析数据为可执行的sql格式数据;基于所述sql格式数据中的主键进行哈希运算,得到数字编号,根据所述数字编号将所述sql格式数据插入相应的队列之间。
在其中一些实施例中,所述根据路由配置关系,将所述解析数据写入对应的下游数据库,包括:根据所述路由配置关系,从所述队列中取出所述sql格式数据,写入对应的所述下游数据库。
在其中一些实施例中,所述方法还包括:在对所述目标线程中用户订阅的数据主题中的分区数据提取失败、或提取所述分区数据存在延迟的情况下,进行报警。
在其中一些实施例中,所述获取目标线程的用户订阅状态,包括:利用第一中间件向上游数据库发送获取日志的交互协议请求,对所述上游数据库中的操作行为进行读取;启动所述第一中间件,将所述上游数据库中的操作行为推送至第二中间件;从所述第二中间件中获取所述目标线程的用户订阅状态。
在其中一些实施例中,所述提取所述目标线程中用户订阅的数据主题中的分区数据,包括:从所述第二中间件直接获取所述目标线程中用户订阅的数据主题中的分区数据。
在其中一些实施例中,预设所述第二中间件与所述下游数据库的所述路由配置关系,然后从所述第二中间件同步获取所述目标线程中用户订阅的数据主题中的分区数据。
在其中一些实施例中,所述方法还包括:在所述目标线程从处于用户订阅的状态变为非订阅的状态后,停止提取所述目标线程中用户订阅的数据主题中的分区数据。
第二方面,本申请实施例提供了一种同步数据的装置,包括:获取模块、数据模块、解析模块以及同步模块;所述获取模块,用于获取目标线程的用户订阅状态;所述数据模块,用于在所述目标线程处于用户订阅的状态时,提取所述目标线程中用户订阅的数据主题中的分区数据;所述解析模块,用于对所述分区数据进行解析,得到解析数据;所述同步模块,用于根据路由配置关系,将所述解析数据写入对应的下游数据库。
第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的一种同步数据的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的一种同步数据的方法。
相比于相关技术,本申请实施例提供的一种同步数据的方法、装置和计算机可读存储介质,通过获取目标线程的用户订阅状态;在该目标线程处于用户订阅的状态时,提取该目标线程中用户订阅的数据主题中的分区数据;对该分区数据进行解析,得到解析数据;根据路由配置关系,将该解析数据写入对应的下游数据库。本申请能够快速实现上下游数据库的数据同步。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1根据本申请实施例的一种同步数据的方法的终端的硬件结构框图;
图2是根据本申请实施例的一种同步数据的方法的流程图;
图3是根据本申请实施例的一种同步数据的方法的获取用户订阅状态步骤的流程图;
图4是根据本申请实施例的一种同步数据的另一种方法的流程图;
图5是根据本申请实施例的一种同步数据的装置的结构框图;
图6是根据本申请实施例的一种计算机可读存储介质的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本实施例提供的方法实施例可以在终端、计算机或者类似的运算装置中执行。以运行在终端上为例,图1根据本申请实施例的一种同步数据的方法的终端的硬件结构框图。如图1所示,终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述终端的结构造成限定。例如,终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的一种同步数据的方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
本实施例提供了一种同步数据的方法,图2是根据本申请实施例的一种同步数据的方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201,获取目标线程的用户订阅状态。
其中,上述的订阅属于用户对于数据库的一种操作,用户需要什么样的数据就去数据库订阅。用户订阅状态是可以随时改变的,例如,在不需要订阅时能够直接取消订阅,这样就不会提取到数据,所以在每次订阅数据之前,需要首先判断用户订阅状态。
该目标线程指的是操作系统能够进行运算调度的最小单位。大部分情况下,它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
其中,上游数据库是指需要被同步的源数据库,下游数据库是指目标数据库,要想实现将上游的数据同步至下游数据库,不能简单地进行传输,需要通过中间件进行转发解析,然后再通过目标数据库的订阅,提取解析到的数据,将目标数据库进行更新。
步骤S202,在该目标线程处于用户订阅的状态时,提取该目标线程中用户订阅的数据主题中的分区数据。
其中,在该目标线程处于用户订阅的状态时,本机的运行系统在运行时会开启多个线程,每个线程都会包含一个用户,并且执行提取数据库的数据行为。
其中,此处的数据主题可以指kafka的数据主题,是记录订阅数据的地方,可以用来区分业务系统,同时一个数据主题可以有多个用户来进行订阅。用户能够订阅kafka中的数据主题,并拉取数据的线程。
其中,分区数据是指该目标线程中用户所订阅的数据存储在不同区域内的数据,因为用户订阅的数据不一致,提取的区域也不一致。
需要说明的是,在提取到分区数据时,同时也能得知预设路由的配置关系,在对分区解析完成之后,按照预设的路由配置关系传输被解析的分区数据。
步骤S203,对该分区数据进行解析,得到解析数据。
其中,对该分区数据进行解析是通过对kafka数据库中对应的数据主题中的数据进行循环读取,在循环读取之后得到的数据称为解析数据。
需要说明的是,得到的解析数据包括:数据库操作中的增删改操作、数据库名、数据表名和修改的字段的信息;另外,该解析过程会根据操作类型填充关键字,根据操作类型对应不同的语法进行对解析到的数据进行填充。
步骤S204,根据路由配置关系,将该解析数据写入对应的下游数据库。
通过上述步骤,首先判断线程中的用户是否处于订阅的状态,处于订阅的状态能够拉取数据,如果不处于订阅状态,则需要重新配置,订阅成功后,然后可以拉取分区数据,在分区数据没有延迟的情况下,可以保证分区数据处于正常状态,没有任何异常问题,接下来就可以提取分区数据将分区数据进行解析生成解析数据,将该解析数据写入对应的下游数据库。本申请通过对分区数据进行解析操作能够实现数据的统一,同时扩大了数据的流向。通过上述步骤,可以将上游的数据库全部或者部分库表中更新的数据,在判断完状态和延迟后,实现上下游数据库的统一,同时也可以实现上游数据库任意路由到不同类型或者不同实例的下游数据库中。
在其中一些实施例中,对分区数据进行解析,得到解析数据,包括:
循环解析所述分区数据,得到所述解析数据;其中,所述解析数据为可执行的sql格式数据;
基于所述sql格式数据中的主键进行哈希运算,得到数字编号,根据所述数字编号将所述sql格式数据插入相应的队列之间。
其中,该sql格式数据包括sql格式的操作类型、库名、表名和修改的字段信息。
其中,因为队列放在数组中,所以每个队列都有编号,对数据进行哈希运算之后会得到一个数字,将这个数字插入到队列相应的编号之中,就可以将分区数据加入到队列之中。
在其中一些实施例中,将解析数据写入对应的下游数据库,包括:根据该路由配置关系,从所述队列中取出所述sql格式数据,写入对应的所述下游数据库。
其中,根据路由配置关系,将该解析数据写入该下游数据库之后,在下游数据库中执行该sql格式的数据,从而实现了mysql数据的一次修改多处复用的效果,扩大了数据的流向。
在其中一些实施例中,在对目标线程中用户订阅的数据主题中的分区数据提取失败、或提取所述分区数据存在延迟的情况下,进行报警。
其中,提取失败是指从所述目标线程中用户订阅的数据主题中未拉取到分区数据。
其中,判断延迟是为了判断是否存在异常,若延迟时长在预设范围内,则证明不存在异常。
其中,系统记录延迟时间之后,可以通过通讯软件发送到终端进行告警。能够迅速得知提取数据延迟时间,如果提取数据延迟时间较为持久,极有可能是出现了严重的异常情况,可以通过用户手动停止订阅。
本实施例提供了一种同步数据的方法,图3是根据本申请实施例的一种同步数据的方法的获取用户订阅状态步骤的流程图,如图3所示,该流程包括如下步骤:
步骤S301,利用第一中间件向该上游数据库发送获取日志的交互协议请求,对该上游数据库中的操作行为进行读取。
其中,将Canal作为该系统的一个中间件,首先Canal向mysql数据库发送获取日志文件的交互协议请求,具体来讲,是通过Canal先向mysql数据库发送dump交互协议给mysql数据库,mysql数据库将日志文件推送回Canal,这样做的目的是为了对mysql数据库中的增删改操作的日志文件进行读取。
步骤S302,启动该第一中间件,将该上游数据库中的操作行为推送至第二中间件。
其中,此处的第二中间件为kakfa,全称为Apache kafka,是一种按照分布式事务日志架构的大规模发布/定阅消息的系统;同时kafka具有一定的存储功能,能够在kafka中设置多个分类文件,每个分类文件名能够与日志文件中的数据进行分类匹配,进行同步,得到分类数据。其中,日志文件中的数据携带标识信息,例如,库名或者库表。
ID 源库名 源表名 配置信息
1 Baidu cloud Agent Kss.Baidu cloud
2 Oss Device Kss.oss
3 Baidu cloud Power Kss.Baidu could
4 Oss Energy Kss.oss
步骤S303,从第二中间件中获取该目标线程的用户订阅状态。
其中,从第二中间件也就是kafka中获取到的数据为分类数据,可以直接放入下游数据库,也可以分类到不同数据库。分类到不同数据库是通过在数据同步到下游数据库前预设路由配置,根据数据表名或者数据库名,将kafka里面的日志文件路由至下游数据库。
更进一步说明,路由关系是预先设定的,例如,可以过设置数据库的库名与表名与kafka相关联,将kafaka中的分类数据传输到对应的数据库或数据表中,例如,库到库,表到表的关系:
ID 数据源名称 数据源类型 是否目标库 链接
1 Channel-1 PG Jdbc:mysql://19.161.7.11
2 Channel-2 MyQL Jdbc:mysql://19.161.8.2
3 Channel-3 MyQL Jdbc:mysql://19.161.9.8
4 Channel-4 PG Jdbc:mysql://19.161.7.13
其中,从该第二中间件获取该上游数据库中目标表线程的用户订阅状态,对路由进行配置,实现了扩大数据的流向。
在其中一些实施例中,该提取该目标线程中用户订阅的数据主题中的分区数据,包括:从该第二中间件直接获取该目标线程中用户订阅的数据主题中的分区数据。
其中,从该第二中间件直接获得该目标线程中的分区数据,能够提高同步数据的速度。
在其中一些实施例中,提取该目标线程中用户订阅的数据主题中的分区数据,包括:预设第二该中间件与该下游数据库的路由配置关系,从该中间件同步获取该目标线程中用户订阅的数据主题中的分区数据。
其中,通过预设该第二中间件与该下游数据库的路由配置,从第二中间件也就是kafka中获取到的数据为分类数据,分类到不同数据库是通过在数据同步到下游数据库前预设路由配置关系,根据数据表名或者数据库名,将kafka里面的日志文件路由至下游数据库。在其中一些实施例中,在该目标线程处于用户订阅的状态时,提取该目标线程中用户订阅的数据主题中的分区数据,并判断提取该分区数据是否存在延迟,包括:
在该目标线程处于用户订阅的情况下,提取该目标线程中用户订阅的数据主题中的分区数据;在该目标线程中存在用户订阅的数据主题中的分区数据的情况下,判断提取该分区数据是否存在延迟。
例如,当前消费者拉取对应topic中的数据,并判断是否有数据,若拉取“60次”没数据则钉钉/短信告警,若“有数据”则继续。
其中,topic是kafka的数据主题,用来数据记录发布的地方,同时可以用来区分业务系统。
其中,kafka中的Topics包含订阅者模式,一个topic可以拥有一个或者多个消费者来订阅它的数据。
其中,消费者是kafka组件,主要是用于订阅kafka中的topic,并拉取数据。
在其中一些实施例中,该方法还包括:在该目标线程从处于用户订阅的状态变为非订阅的状态后,停止提取该目标线程中用户订阅的数据主题中的分区数据。
其中,当用户处于非订阅状态时,就不会再进行提取数据这一步骤,所以停止提取该目标线程中用户订阅的数据主题中的分区数据,以节约运行内存。
本申请实施例还提供了一种同步数据的方法,图4是根据本申请实施例的一种同步数据的另一种方法的流程图,如图4所示,该方法包括如下步骤:
步骤S401,配置中间件的数据;
其中,配置中间件的信息,中间件选用canal,配置canal中mysql、kafka、zookeeper等信息。
具体地,将canal作为该系统中的中间件,用于将mysql中增删改动作记录的日志文件进行读取或采集,然后canal先向mysql发送获取日志文件的交互协议请求,通过发送dump交互协议给mysql,mysql就将日志文件推送给canal。下面为配置的规则。
步骤S1,配置mysql,预先设置的关联规则,在canal里预设多个mysql的IP地址或者域名。
步骤S2,配置预先设置kafka、zookeeper的规则。
具体地,预设kafka、zookeeper,预先设置的关联规则,在canal里预设kafka、zookeeper的集群,也可以是为IP或域名。
步骤S3,配置写入规则。
具体地,配置写入kafka的topic规则,kafka也是一个中间件,具有一定存储功能,且kafka中设置多个分类文件,每个分类文件名与日志文件中的数据进行分类匹配,日志文件中的数据携带标识信息,比如库名或者表名。
假如该库名或表名,不在kafka的预设分类文件中,则将该库名信息存储至默认文件中。
步骤S402,配置下游数据库或者表同步的路由信息。
其中,kafka中分类数据,可以直接用于下游使用,也可以将分类数据同步到不同数据库。数据同步前的预设路由配置,根据表名或者库名将kafka里日志文件,路由至下游数据库,路由规则是预先设定的,比如通过库名或表名与目标库进行关联。
步骤S403,利用第一中间件向该上游数据库发送获取日志的交互协议请求,对上游数据库中的操作行为进行读取。
步骤S404,启动该第一中间件,将该上游数据库中的操作行为推送至第二中间件。
步骤S405,预设路由配置关系,从该第二中间件中获取目标线程的用户订阅状态。
步骤S406,在该目标线程处于用户订阅的状态时,提取该目标线程中用户订阅的数据主题中的分区数据。
步骤S407,根据该路由配置关系,对该分区数据进行解析,得到解析数据,将该解析数据写入对应的下游数据库。
具体地,循环解析该分区数据,根据设置的路由规则,生成可执行的sql格式的数据;其中,该sql格式的数据包括sql格式的操作类型、库名、表名和修改的字段信息;按照该sql格式的数据中的主键进行哈希运算,插入到队列之间;从该队列中循环取数,并从该队列中获取到需要同步的数据,得到该解析数据,然后根据路由配置关系将该解析数据写入该下游数据库,在该下游数据库中执行可执行的sql格式的数据。
本实施例还提供了一种同步数据的装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本申请实施例的一种同步数据的装置的结构框图,如图5所示,该装置包括:获取模块51、数据模块52、解析模块53以及同步模块54;
该获取模块51,用于获取目标线程的用户订阅状态;
该数据模块52,用于在该目标线程处于用户订阅的状态时,提取该目标线程中用户订阅的数据主题中的分区数据;
该解析模块53,用于对该分区数据进行解析,得到解析数据;
该同步模块54,用于根据路由配置关系,将该解析数据写入对应的下游数据库。在其中一些实施例中,该获取模块51,用于利用第一中间件向该上游数据库发送获取日志的交互协议请求,对该上游数据库中的操作行为进行读取;启动该第一中间件,将该上游数据库中的操作行为推送至第二中间件;从该第二中间件中获取该目标线程的用户订阅状态。
在其中一些实施例中,该数据模块52,用于直接获取模块用于从该第二中间件直接获取该目标线程中用户订阅的数据主题中的分区数据。
在其中一些实施例中,该数据模块52,用于定位获取模块用于在该目标线程处于用户订阅的情况下,提取该目标线程中用户订阅的数据主题中的分区数据;在该目标线程中存在用户订阅的数据主题中的分区数据的情况下,判断提取该分区数据是否存在延迟。
在其中一些实施例中,该数据模块52,用于暂停订阅模块用于在该目标线程从处于用户订阅的状态变为非订阅的状态后,停止提取该目标线程中用户订阅的数据主题中的分区数据。
在其中一些实施例中,该数据模块52,用于记录延迟时间,将该延迟时间推送至终端。
在其中一些实施例中,该解析模块53,用于循环解析该分区数据,得到该解析数据;其中,该解析数据为可执行的sql格式数据。
基于该sql格式的数据中的主键进行哈希运算,得到数字编号,根据该数字编号将该sql格式的数据插入相应的队列之间;
在其中一些实施例中,该同步模块54,用于根据路由配置关系,从该队列中取出该sql格式的数据,写入对应的该下游数据库。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
步骤S1,获取目标线程的用户订阅状态。
步骤S2,在该目标线程处于用户订阅的状态时,提取该目标线程中用户订阅的数据主题中的分区数据。
步骤S3,对该分区数据进行解析,得到解析数据。
步骤S4,根据路由配置关系,将该解析数据写入对应的下游数据库。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
本领域技术人员可以理解,图6中示出的结构,仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各实施例提供的一种同步数据的方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上该的实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种同步数据的方法,其特征在于,包括:
利用第一中间件向上游数据库发送获取日志的交互协议请求,对所述上游数据库中的操作行为进行读取;启动所述第一中间件,将所述上游数据库中的操作行为推送至第二中间件;从所述第二中间件中获取目标线程的用户订阅状态;
在所述目标线程处于用户订阅的状态时,提取所述目标线程中用户订阅的数据主题中的分区数据;
对所述分区数据通过循环读取的方式进行解析,得到解析数据;
根据路由配置关系,将所述解析数据写入对应的下游数据库。
2.根据权利要求1所述的方法,其特征在于,所述对所述分区数据通过循环读取的方式进行解析,得到解析数据,包括:
循环读取所述分区数据进行解析,得到所述解析数据;其中,所述解析数据为可执行的sql格式数据;
基于所述sql格式数据中的主键进行哈希运算,得到数字编号,根据所述数字编号将所述sql格式数据插入相应的队列之间。
3.根据权利要求2所述的方法,其特征在于,所述根据路由配置关系,将所述解析数据写入对应的下游数据库,包括:根据所述路由配置关系,从所述队列中取出所述sql格式数据,写入对应的所述下游数据库。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在对所述目标线程中用户订阅的数据主题中的分区数据提取失败、或提取所述分区数据存在延迟的情况下,进行报警。
5.根据权利要求1所述的方法,其特征在于,所述提取所述目标线程中用户订阅的数据主题中的分区数据,包括:
从所述第二中间件直接获取所述目标线程中用户订阅的数据主题中的分区数据。
6.根据权利要求1所述的方法,其特征在于,所述提取所述目标线程中用户订阅的数据主题中的分区数据,包括:
预设所述第二中间件与所述下游数据库的所述路由配置关系,然后从所述第二中间件同步获取所述目标线程中用户订阅的数据主题中的分区数据。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述目标线程从处于用户订阅的状态变为非订阅的状态后,停止提取所述目标线程中用户订阅的数据主题中的分区数据。
8.一种同步数据的装置,其特征在于,包括:获取模块、数据模块、解析以及同步模块;
所述获取模块,用于利用第一中间件向上游数据库发送获取日志的交互协议请求,对所述上游数据库中的操作行为进行读取;启动所述第一中间件,将所述上游数据库中的操作行为推送至第二中间件;从所述第二中间件中获取目标线程的用户订阅状态;
所述数据模块,用于在所述目标线程处于用户订阅的状态时,提取所述目标线程中用户订阅的数据主题中的分区数据;
所述解析模块,用于对所述分区数据通过循环读取的方式进行解析,得到解析数据;
所述同步模块,用于根据路由配置关系,将所述解析数据写入对应的下游数据库。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的一种同步数据的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任一项所述的一种同步数据的方法。
CN202011241082.0A 2020-11-09 2020-11-09 一种同步数据的方法、装置和计算机可读存储介质 Active CN112434243B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011241082.0A CN112434243B (zh) 2020-11-09 2020-11-09 一种同步数据的方法、装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011241082.0A CN112434243B (zh) 2020-11-09 2020-11-09 一种同步数据的方法、装置和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN112434243A CN112434243A (zh) 2021-03-02
CN112434243B true CN112434243B (zh) 2023-04-07

Family

ID=74700326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011241082.0A Active CN112434243B (zh) 2020-11-09 2020-11-09 一种同步数据的方法、装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN112434243B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113055484A (zh) * 2021-03-19 2021-06-29 北京星汉博纳医药科技有限公司 一套通用的医药数据智能同步系统
CN113392159A (zh) * 2021-06-18 2021-09-14 湖南快乐阳光互动娱乐传媒有限公司 一种数据共享方法及装置
CN115203336A (zh) * 2022-09-19 2022-10-18 平安银行股份有限公司 数据库数据实时同步方法、系统、计算机终端及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532493A (zh) * 2019-08-29 2019-12-03 北京明略软件系统有限公司 数据的处理方法及装置、存储介质和电子装置
CN111125260A (zh) * 2020-01-21 2020-05-08 重庆文理学院 一种基于SQL Server的数据同步方法及系统
CN111212100A (zh) * 2018-11-22 2020-05-29 财团法人工业技术研究院 消息队列发布与订阅的同步方法及其系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111212100A (zh) * 2018-11-22 2020-05-29 财团法人工业技术研究院 消息队列发布与订阅的同步方法及其系统
CN110532493A (zh) * 2019-08-29 2019-12-03 北京明略软件系统有限公司 数据的处理方法及装置、存储介质和电子装置
CN111125260A (zh) * 2020-01-21 2020-05-08 重庆文理学院 一种基于SQL Server的数据同步方法及系统

Also Published As

Publication number Publication date
CN112434243A (zh) 2021-03-02

Similar Documents

Publication Publication Date Title
CN112434243B (zh) 一种同步数据的方法、装置和计算机可读存储介质
CN108874558B (zh) 分布式事务的消息订阅方法、电子装置及可读存储介质
CN110427368B (zh) 数据处理方法、装置、电子设备及存储介质
CN113067883B (zh) 数据传输方法、装置、计算机设备及存储介质
CN112311617A (zh) 一种配置化数据监控告警方法及系统
CN110213380B (zh) 一种消息推送方法、装置、计算机设备及存储介质
CN111143382B (zh) 数据处理方法、系统和计算机可读存储介质
CN111447102B (zh) Sdn网络设备访问方法、装置、计算机设备及存储介质
CN108259533B (zh) 一种数据传输方法和装置
CN109788026B (zh) 消息处理方法及装置
WO2020248375A1 (zh) 数据库间数据同步方法、系统、计算机设备及存储介质
CN113553310B (zh) 数据的采集方法及装置、存储介质、电子设备
CN110532493B (zh) 数据的处理方法及装置、存储介质和电子装置
CN112506870A (zh) 数据仓库增量更新方法、装置及计算机设备
CN110928851A (zh) 处理日志信息的方法、装置、设备及存储介质
CN112328448A (zh) 基于Zookeeper的监控方法、监控装置、设备及存储介质
CN112667426A (zh) 日志分析方法及装置
CN111371585A (zh) 用于cdn节点的配置方法及装置
CN113422808B (zh) 物联网平台http信息推送方法、系统、装置及介质
US20220035666A1 (en) Method and apparatus for data processing, server and storage medium
CN112131014B (zh) 决策引擎系统及其业务处理方法
CN113590433A (zh) 数据管理方法、数据管理系统和计算机可读存储介质
CN112732663A (zh) 一种日志信息处理方法及装置
CN112463527A (zh) 一种数据处理方法、装置、设备、系统及存储介质
CN111008220A (zh) 数据源的动态识别方法及装置、存储介质和电子装置

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