CN107273542B - 高并发数据同步方法及系统 - Google Patents
高并发数据同步方法及系统 Download PDFInfo
- Publication number
- CN107273542B CN107273542B CN201710545164.6A CN201710545164A CN107273542B CN 107273542 B CN107273542 B CN 107273542B CN 201710545164 A CN201710545164 A CN 201710545164A CN 107273542 B CN107273542 B CN 107273542B
- Authority
- CN
- China
- Prior art keywords
- data
- transaction
- thread
- pool
- source end
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种高并发数据同步方法及系统,数据源端发送成功后和数据末端业务处理完毕后才做持久化,采用拆分的方式将数据源端的数据内容拆分成多块,并在后面加入一个合并线程以顺序的方式,以事务为单位进行处理,并将数据以Hash值进行分类并行发送,且使用消息中间件做缓冲,可启动任意个接收端并行收取数据。本发明可在保证数据一致性的前提下极大地提高高并发下数据同步的处理能力。
Description
技术领域
本发明涉及数据同步领域,特别是涉及一种可实现数据一致性和低延迟的高并发数据同步方法及系统。
背景技术
目前随着互联网的发展,金融公司的数据在每年成几何倍数增长,数据同步是内部一个非常重要的流程,而券商行业对数据一致性及时效性要求极高,要求数据零丢失、且低时延。
同时经典的CAP理论表明,任何分布式系统在一致性、可用性、分区容错性方面,不能兼得,最多只能取其二。而券商行业每天开市期间大量的交易数据在短时间内聚集,数据同步的时效性会大打折扣,这个问题在行情高峰期间尤为明显。目前在券商行业中存在的数据同步产品仍存在高并发下性能瓶颈的问题,如高并发下同步延迟会达到十多秒。
发明内容
本发明的技术目的在于提出一种可保证数据一致性且可极大地减少数据同步延迟的高并发数据同步方法及系统。
针对上述技术目的,本发明提供的高并发数据同步方法包含以下步骤。步骤1,数据源端启动拆分线程,该拆分线程从持久化区域读取上次同步位置,并定时读取数据库的最新位置,该拆分线程针对该上次同步位置和该最新位置所对应范围内的数据段进行拆分,并将拆分的数据段放入代办拆分的拆分池中。步骤2,该数据源端启动多个数据采集线程,该多个数据采集线程不断从该拆分池中读取拆分的数据段消费。步骤3,该数据源端启动合并线程,该合并线程中的事务池针对每个拆分的数据段中读取到的数据进行事务控制。步骤4,该合并线程按顺序执行事务池中的任务,该合并线程将事务完成的数据根据该事务下动作键值的Hash算法进行分类,并行发送给该数据源端启动的多个发送线程。步骤5,该多个发送线程将分类的数据发送到消息中间件,且在发送完毕后该合并线程将该最新位置写入该数据源端启动的持久化线程,并由该持久化线程异步写入该持久化区域。步骤6,数据末端启动多个接收线程并行接收该消息中间件中缓冲的数据,且该数据末端在业务完成后使用该消息中间件做持久化。
优选地,当该合并线程按顺序执行事务池中的任务时,若事务未完成则按事务标识放入该事务池继续等待,如果该事务已完成则从该事务池中清除该事务。
优选地在步骤4中,该合并线程将完成事务下的动作进行分拆,将每个动作中的键值转成Hash值后对该多个发送线程的数量取模,根据得到的取模值放入对应的发送线程中。进一步地,每个动作中的键值选取自每条数据的主键或者数据存储的物理地址。
优选地,该多个数据采集线程之间并行工作。
本发明还提供一种高并发数据同步系统,包含数据源端、消息中间件和数据末端。该数据源端启动的拆分线程从持久化区域读取上次同步位置,并定时读取数据库的最新位置,该拆分线程针对该上次同步位置和该最新位置所对应范围内的数据段进行拆分,并将拆分的数据段放入代办拆分的拆分池中。该数据源端启动的多个数据采集线程不断从该拆分池中读取拆分的数据段消费。该数据源端启动的合并线程中的事务池针对每个拆分的数据段中读取到的数据进行事务控制。该数据源端启动的合并线程按顺序执行事务池中的任务,该合并线程将事务完成的数据根据该事务下动作键值的Hash算法进行分类,并行发送给该数据源端启动的多个发送线程。该多个发送线程将分类的数据发送到消息中间件,且该合并线程在发送完毕后将该最新位置写入该数据源端启动的持久化线程,并由该持久化线程异步写入该持久化区域。该数据末端启动的多个接收线程并行接收该消息中间件中缓冲的数据,且该数据末端在业务完成后使用该消息中间件做持久化。
优选地,当该合并线程按顺序执行事务池中的任务时,若事务未完成则按事务标识放入该事务池继续等待,如果该事务已完成则从该事务池中清除该事务。
优选地,该合并线程将完成事务下的动作进行分拆,将每个动作中的键值转成Hash值后对该多个发送线程的数量取模,根据得到的取模值放入对应的发送线程中。进一步地,每个动作中的键值选取自每条数据的主键或者数据存储的物理地址。
优选地,该多个数据采集线程之间并行工作。
与现有技术相比,本发明的持久化策略保证数据一致性,且拆分和缓冲的方式极大地提高了高并发下数据同步的处理能力,使系统可实现针对大量数据低延迟同步。
附图说明
图1为本发明一实施例的数据同步方法的流程图。
图2为本发明的数据同步系统的工作原理示意图。
具体实施方式
为使对本发明的目的、构造、特征、及其功能有进一步的了解,兹配合实施例详细说明如下。
请参见图1和图2,图1为本发明一实施例的数据同步方法的流程图,图2为本发明的数据同步系统的工作原理示意图。本发明的高并发数据同步方法包含以下步骤:
S1,数据源端启动拆分线程,该拆分线程从持久化区域读取上次同步位置,并定时读取数据库的最新位置,该拆分线程针对该上次同步位置和该最新位置所对应范围内的数据段进行拆分,并将拆分的数据段放入代办拆分的拆分池中。
S2,该数据源端启动多个数据采集线程,该多个数据采集线程不断从该拆分池中读取拆分的数据段消费。优选地,该多个数据采集线程之间并行工作。
S3,该数据源端启动合并线程,该合并线程中的事务池针对每个拆分的数据段中读取到的数据进行事务控制。
S4,该合并线程按顺序执行事务池中的任务,该合并线程将事务完成的数据根据该事务下动作键值(Key)的Hash算法进行分类,并行发送给该数据源端启动的多个发送线程。
在一实施例中,如果该顺序的作业还没做完,该合并线程将会阻塞等待。具体来说,当该合并线程按顺序执行事务池中的任务时,若事务未完成则按事务标识放入该事务池继续等待,如果该事务已完成则从该事务池中清除该事务。
优选地,在步骤S4中,该合并线程将完成事务下的动作进行分拆,将每个动作中的键值转成Hash值后对该多个发送线程的数量取模,根据得到的取模值放入对应的发送线程中。在实际应用中,每个动作中的键值选取自每条数据的主键或者数据存储的物理地址,一般来说,只要是能够标志该条数据唯一性的字段即可,如在Oracle数据库可以使用rowid作为键值,但本发明并不以此为限。
S5,该多个发送线程将分类的数据发送到消息中间件,且在发送完毕后该合并线程将该最新位置写入该数据源端启动的持久化线程,并由该持久化线程异步写入该持久化区域。优选地,该多个发送线程之间并行工作,互不影响。
S6,数据末端启动多个接收线程并行接收该消息中间件中缓冲的数据,且该数据末端在业务完成后使用该消息中间件做持久化。
该技术方案是以拆分处理的思想化解数据峰值,再以合并线程统一管控后续的处理,保证数据的顺序性和事务性。同时又利用每条数据独有性的特征继续拆分并行发送,保证数据发送的高效性。以消息中间件为缓冲提升数据的吞吐量,数据末端又以并行处理的思想保证数据接收的高效性。
继续参见图2,本发明的高并发数据同步系统100包含数据源端1、消息中间件2和数据末端3。
数据源端1启动的拆分线程11从持久化区域12读取上次同步位置,并定时读取数据库10的最新位置,拆分线程11针对该上次同步位置和该最新位置所对应范围内的数据段进行拆分,并将拆分的数据段放入代办拆分的拆分池13中。
数据源端1启动的多个数据采集线程14_0、14_1、…、14_M-1不断从拆分池13中读取拆分的数据段消费,其中M为数据采集线程数。优选地,多个数据采集线程之间并行工作,互不影响。
数据源端1启动的合并线程15中的事务池16针对每个拆分的数据段中读取到的数据进行事务控制。
数据源端1启动的合并线程15按顺序执行事务池16中的任务,合并线程15将事务完成的数据根据该事务下动作键值的Hash算法进行分类,并行发送给数据源端1启动的多个发送线程17_0、17_1、…、17_N-1,其中N为发送线程数。在一实施例中,如果该顺序的作业还没做完,合并线程15将会阻塞等待。具体来说,当合并线程15按顺序执行事务池16中的任务时,若事务未完成则按事务标识放入事务池16继续等待,如果该事务已完成则从事务池16中清除该事务。优选地,合并线程15将完成事务下的动作进行分拆,将每个动作中的键值转成Hash值后对发送线程数N取模,根据得到的取模值放入对应的发送线程中。在实际应用中,每个动作中的键值选取自每条数据的主键或者数据存储的物理地址,一般来说,只要是能够标志该条数据唯一性的字段即可,如在Oracle可以使用rowid作为键值,但本发明并不以此为限。
多个发送线程将分类的数据发送到消息中间件2,且合并线程15在发送完毕后将该最新位置写入数据源端1启动的持久化线程,并由该持久化线程异步写入持久化区域12。在一实施例中,数据源端1的多个发送线程会根据设置将数据分类,发送到消息中间件2对应主题(Topic)的分区中。
数据末端3启动的多个接收线程31_0、31_1、…、31_K-1并行接收消息中间件2中缓冲的数据,且数据末端3在业务完成后使用消息中间件2做持久化,其中K为接收线程数。在实际应用中,接收线程数K原则上不超过上述主题(Topic)的分区数,多个接收线程同时读取消息中间件2中缓冲的数据,从数据末端3上次持久化的位置开始接收数据并在业务处理完毕后做持久化到读取的位置,因为数据源端发送的数据都会带有相应的键值(Key),数据末端需要根据键值进行内容排重,以保证数据的唯一性。
本发明提出了一种数据同步过程中保证数据一致性和低延迟的解决方案。首先,本发明通过数据源端发送成功后和数据末端业务处理完毕后才做持久化,保证数据在消费完成之前不会丢失,从而保证了一致性。同时,持久化通过异步方式实现,减少时间消耗。
其次,采用拆分的方式,将数据源端的数据内容拆分成多块,将最耗时的解读过程交给多个任务并行完成,并在后面加入一个合并线程以顺序的方式,以事务为单位进行处理,并将数据以Hash值进行分类并行发送,极大地提高了高并发下数据同步的处理能力。
再次,使用消息中间件做缓冲,可以启动任意个接收端并行收取数据,极大地提升了数据同步的吞吐能力。
因此,本发明的持久化策略保证了数据一致性,且极大地提高了高并发下数据同步的处理能力,使系统具备了在万笔交易下数据秒级同步的能力。
本发明已由上述相关实施例加以描述,然而上述实施例仅为实施本发明的范例。必需指出的是,已揭露的实施例并未限制本发明的范围。相反地,在不脱离本发明的精神和范围内所作的更动与润饰,均属本发明的专利保护范围。
Claims (10)
1.一种高并发数据同步方法,其特征在于包含以下步骤:
步骤1,数据源端启动拆分线程,该拆分线程从持久化区域读取上次同步位置,并定时读取数据库的最新位置,该拆分线程针对该上次同步位置和该最新位置所对应范围内的数据段进行拆分,并将拆分的数据段放入代办拆分的拆分池中;
步骤2,该数据源端启动多个数据采集线程,该多个数据采集线程不断从该拆分池中读取拆分的数据段消费;
步骤3,该数据源端启动合并线程,该合并线程中的事务池针对每个拆分的数据段中读取到的数据进行事务控制;
步骤4,该合并线程按顺序执行事务池中的任务,该合并线程将事务完成的数据根据该事务下动作键值的Hash算法进行分类,并行发送给该数据源端启动的多个发送线程;
步骤5,该多个发送线程将分类的数据发送到消息中间件,且在发送完毕后该合并线程首先进行判断,如若到发送截至位置无未完结事务,则将该最新位置写入该数据源端启动的持久化线程,并由该持久化线程异步写入该持久化区域;否则不做持久化;
步骤6,数据末端启动多个接收线程并行接收该消息中间件中缓冲的数据,且该数据末端在业务完成后使用该消息中间件做持久化。
2.如权利要求1所述的高并发数据同步方法,其特征在于,当该合并线程按顺序执行事务池中的任务时,若事务未完成则按事务标识放入该事务池继续等待,如果该事务已完成则从该事务池中清除该事务。
3.如权利要求1所述的高并发数据同步方法,其特征在于,在步骤4中,该合并线程将完成事务下的动作进行分拆,将每个动作中的键值转成Hash值后对该多个发送线程的数量取模,根据得到的取模值放入对应的发送线程中。
4.如权利要求3所述的高并发数据同步方法,其特征在于,每个动作中的键值选取自每条数据的主键或者数据存储的物理地址。
5.如权利要求1所述的高并发数据同步方法,其特征在于,该多个数据采集线程之间并行工作。
6.一种高并发数据同步系统,包含数据源端、消息中间件和数据末端,其特征在于:该数据源端启动的拆分线程从持久化区域读取上次同步位置,并定时读取数据库的最新位置,该拆分线程针对该上次同步位置和该最新位置所对应范围内的数据段进行拆分,并将拆分的数据段放入代办拆分的拆分池中;该数据源端启动的多个数据采集线程不断从该拆分池中读取拆分的数据段消费;该数据源端启动的合并线程中的事务池针对每个拆分的数据段中读取到的数据进行事务控制;该数据源端启动的合并线程按顺序执行事务池中的任务,该合并线程将事务完成的数据根据该事务下动作键值的Hash算法进行分类,并行发送给该数据源端启动的多个发送线程;该多个发送线程将分类的数据发送到消息中间件,且该合并线程在发送完毕后将该最新位置写入该数据源端启动的持久化线程,并由该持久化线程异步写入该持久化区域;该数据末端启动的多个接收线程并行接收该消息中间件中缓冲的数据,且该数据末端在业务完成后使用该消息中间件做持久化。
7.如权利要求6所述的高并发数据同步系统,其特征在于,当该合并线程按顺序执行事务池中的任务时,若事务未完成则按事务标识放入该事务池继续等待,如果该事务已完成则从该事务池中清除该事务。
8.如权利要求6所述的高并发数据同步系统,其特征在于,该合并线程将完成事务下的动作进行分拆,将每个动作中的键值转成Hash值后对该多个发送线程的数量取模,根据得到的取模值放入对应的发送线程中。
9.如权利要求8所述的高并发数据同步系统,其特征在于,每个动作中的键值选取自每条数据的主键或者数据存储的物理地址。
10.如权利要求6所述的高并发数据同步系统,其特征在于,该多个数据采集线程之间并行工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710545164.6A CN107273542B (zh) | 2017-07-06 | 2017-07-06 | 高并发数据同步方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710545164.6A CN107273542B (zh) | 2017-07-06 | 2017-07-06 | 高并发数据同步方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107273542A CN107273542A (zh) | 2017-10-20 |
CN107273542B true CN107273542B (zh) | 2020-11-27 |
Family
ID=60073277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710545164.6A Active CN107273542B (zh) | 2017-07-06 | 2017-07-06 | 高并发数据同步方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107273542B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109962957B (zh) * | 2017-12-26 | 2022-04-05 | 珠海全志科技股份有限公司 | 一种多区域多活服务的数据同步方法和装置 |
CN110209986A (zh) * | 2019-06-06 | 2019-09-06 | 海尔优家智能科技(北京)有限公司 | 内存状态数据同步方法及装置 |
CN110673960B (zh) * | 2019-08-22 | 2022-11-29 | 中国平安财产保险股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
CN111400333A (zh) * | 2020-03-19 | 2020-07-10 | 嘉兴太美医疗科技有限公司 | 数据并行写入方法、系统和计算机可读介质 |
CN112148504A (zh) * | 2020-09-15 | 2020-12-29 | 海尔优家智能科技(北京)有限公司 | 目标消息的处理方法及装置、存储介质及电子装置 |
CN113901141B (zh) * | 2021-10-11 | 2022-08-05 | 京信数据科技有限公司 | 一种分布式数据同步方法及系统 |
CN117763052B (zh) * | 2024-02-22 | 2024-05-10 | 浩鲸云计算科技股份有限公司 | 面向计费多中心内存数据库的数据同步方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582064A (zh) * | 2008-05-15 | 2009-11-18 | 阿里巴巴集团控股有限公司 | 一种大数据量数据处理方法及系统 |
CN101770632A (zh) * | 2010-01-26 | 2010-07-07 | 恒生电子股份有限公司 | 分笔成交的高效处理方法及系统 |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
CN104834558A (zh) * | 2015-05-19 | 2015-08-12 | 北京京东尚科信息技术有限公司 | 一种数据处理的方法及系统 |
CN105978968A (zh) * | 2016-05-11 | 2016-09-28 | 山东合天智汇信息技术有限公司 | 一种海量数据的实时传输处理方法、服务器及处理系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9152467B2 (en) * | 2013-01-18 | 2015-10-06 | Nec Laboratories America, Inc. | Method for simultaneous scheduling of processes and offloading computation on many-core coprocessors |
-
2017
- 2017-07-06 CN CN201710545164.6A patent/CN107273542B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101582064A (zh) * | 2008-05-15 | 2009-11-18 | 阿里巴巴集团控股有限公司 | 一种大数据量数据处理方法及系统 |
CN101770632A (zh) * | 2010-01-26 | 2010-07-07 | 恒生电子股份有限公司 | 分笔成交的高效处理方法及系统 |
CN102902512A (zh) * | 2012-08-31 | 2013-01-30 | 浪潮电子信息产业股份有限公司 | 一种基于多线程编程及消息队列的多线程并行处理方法 |
CN104834558A (zh) * | 2015-05-19 | 2015-08-12 | 北京京东尚科信息技术有限公司 | 一种数据处理的方法及系统 |
CN105978968A (zh) * | 2016-05-11 | 2016-09-28 | 山东合天智汇信息技术有限公司 | 一种海量数据的实时传输处理方法、服务器及处理系统 |
Non-Patent Citations (1)
Title |
---|
高性能证券交易撮合系统的设计和实现;黄宪日 等;《计算机应用与软件》;20101215;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107273542A (zh) | 2017-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107273542B (zh) | 高并发数据同步方法及系统 | |
RU2666245C1 (ru) | Способ и устройство для сохранения данных с высокой степенью многопоточности | |
WO2021057253A1 (zh) | 数据分离存储方法、装置、计算机设备和存储介质 | |
CN111723073B (zh) | 数据存储处理方法、装置、处理系统以及存储介质 | |
CN104166589A (zh) | 一种心跳包的处理方法和装置 | |
CN106909554B (zh) | 一种数据库文本表数据的加载方法及装置 | |
CN110019873B (zh) | 人脸数据处理方法、装置及设备 | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN112612799B (zh) | 一种数据同步方法及终端 | |
CN108139927B (zh) | 联机事务处理系统中事务的基于动作的路由 | |
CN102946411A (zh) | 网络同步系统 | |
CN108874518B (zh) | 一种任务调度方法及终端 | |
CN113687964A (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN110502337B (zh) | 针对Hadoop MapReduce中混洗阶段的优化系统 | |
US10552419B2 (en) | Method and system for performing an operation using map reduce | |
WO2023071566A1 (zh) | 数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 | |
CN108121807B (zh) | Hadoop环境下多维索引结构OBF-Index的实现方法 | |
CN108958967B (zh) | 一种数据处理的方法以及服务器 | |
CN115525659A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
Fukuda et al. | Improving response time for Cassandra with query scheduling | |
US9241046B2 (en) | Methods and systems for speeding up data recovery | |
CN109616156B (zh) | 一种基因测序数据存储方法和装置 | |
US9871698B2 (en) | Information processing device | |
CN112579269B (zh) | 一种定时任务处理方法及装置 | |
US12019631B1 (en) | Systems and methods for reducing computational resource usage in a query-based data access system via a repeated query results repository |
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 |