首页> 中国专利> 基于多线程的分布式数据同步方法及其系统

基于多线程的分布式数据同步方法及其系统

摘要

本发明的目的在于提供一种基于多线程机制的分布式数据同步方法及其系统,该方法和系统通过差异数据捕获、创建业务同步线程、对所捕获的差异数据进行处理,产生格式化差异数据表或者能够直接运行的SQL语句、本地持久化数据,以及传输结束后销毁本地磁盘数据,从而完成数据同步工作,本发明通过利用多线程同步机制使各分布式终端服务器之间的单个同步任务能够独立运行,使得数据能够在不占用当前服务资源的情况下进行高效传输。

著录项

  • 公开/公告号CN104219288A

    专利类型发明专利

  • 公开/公告日2014-12-17

    原文格式PDF

  • 申请/专利号CN201410400698.6

  • 发明设计人 朱永虎;赵志勤;朱金惟;林玉凤;

    申请日2014-08-14

  • 分类号H04L29/08(20060101);

  • 代理机构44104 广州知友专利商标代理有限公司;

  • 代理人周克佑

  • 地址 510620 广东省广州市天河区天河路116号

  • 入库时间 2023-12-17 03:22:58

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-08-02

    未缴年费专利权终止 IPC(主分类):H04L29/08 授权公告日:20180323 终止日期:20180814 申请日:20140814

    专利权的终止

  • 2018-03-23

    授权

    授权

  • 2015-06-10

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20140814

    实质审查的生效

  • 2014-12-17

    公开

    公开

说明书

技术领域

本发明涉及分布式数据的处理,具体来说涉及一种分布式数据的同步方法及其系统。

背景技术

随着互联网技术的发展,单一的数据存储方式已经不再能满足组织或个人对于数据存储量、速度、安全性等方面的要求。为了保证数据存储的安全可靠性,读取速度提升、储存量大等要求,分布式存储已经逐渐成为当前很多组织或个人的首选方案。在分布式系统架构中,当用户界面需要操作或展示具体的业务数据信息时只需要到相应的分布式终端进行查询,为网络传输减轻负担的同时提高总体系统效率。在某个终端数据更新之后,为保证数据的一致性,差异数据要同步到其它各个终端服务器。分布式数据存储主要需解决的就是各终端系统服务器之间的数据一致性问题,根据时间特征性数据同步可分为实时数据同步和间歇性数据同步。

分布式数据同步技术通过使各分布式终端的数据更新的同步,达到使数据分布存放的目的,从而实现数据库的分布式处理应用,大大增加站点的自治性。分布式数据同步方法中数据传输安全性和数据同步效率是验证方案可行性的两大因素,为降低数据传输过程中的风险和提高数据传输效率,发明一种高效且安全的分布式数据同步方法是有必要的。

现今的分布式数据存储大多依靠产品或者服务本身对分布式环境下数据库服务器的数据进行同步,在互联网应用中比较通用的数据传输方式为基于WebService的数据同步机制。WebService实现数据同步原理如图1所示,SOAP消息文本数据携带较多的格式数据,且此种方式必须依托某项特定的服务或者产品,无论是在传输过程中还是在终端接受处理数据都会增加系统资源开销,影响传输效率的同时风险也随之增大。

在当前技术领域下怎样使数据同步更加自动化、提高数据传输安全性及效率是数据同步方案的度量标准。为解决以上所述问题,本发明提出多线程同步机制运用在分布式数据同步方案中,安全性和效率性同时得到保证。

发明内容

本发明的目的在于提供一种基于多线程机制的分布式数据同步方法,该方法利用多线程同步机制使各分布式终端服务器之间的单个同步任务能够独立运行,使得数据能够在不占用当前服务资源的情况下进行高效传输。

本发明的目的可通过以下的技术措施来实现:

一种基于多线程机制的分布式数据同步方法,包括以下步骤:

步骤A:差异数据捕获步骤,捕获并处理在终端分支服务器上对业务数据操作产生的差异数据。主服务程序通过监听器监听用户的请求行为,当终端用户发出修改请求时被监听到,此时主服务程序通过触发器触发线程工厂(即线程管理模块)创建业务同步线程。并对用户的请求进行行为分析,初步得出在当前分布式终端所产生的同步数据包。所述主服务就是当前用户的操作请求。

步骤B:为了保证多线程条件下系统运行可靠。在线程工厂创建线程之前,由线程计数器判断是否可继续创建线程。若业务同步线程数大于N(N的值根据系统通常状态下的并发请求数与网络吞吐量,在系统中人为设定)时,线程工厂则拒绝创建业务同步线程,并提示“数据库连接异常”;若业务同步线程数小于N,则线程工厂继续判断目前运行的线程数并进入线程创建等待状态。

其中,线程工厂在创建业务同步线程时,会根据当前业务流程的需要创建满足用户请求的业务同步线程,并根据用户请求所传的数据类型将数据分配给对应的业务同步线程。

步骤C:对数据进行包装和整理,对所捕获的差异数据进行处理,产生格式化差异数据表或者能够直接运行的SQL语句。当前运行的主服务响应用户请求,同时所产生的差异数据会存储在临时数据集中。业务同步线程对数据集中的数据逐条分析并将其转化为对应可执行的SQL语句,为保证数据在后续的传输过程中不出现丢失将处理后的数据包持久化到当前服务器的本地磁盘中存储。在本地磁盘文件中存储了所需同步的分布式终端的数据库配置信息以及整理后的同步数据SQL。

步骤D:当业务同步线程本地持久化数据之后就会脱离当前主服务的控制,单独运行,随后读取持久化到本地磁盘中的文件数据,根据所存储的各终端数据库信息以直连的方式连接到各终端数据库。数据传输过程中若出现异常,业务同步线程会延迟数秒后重新启动,待到数据全部传输完毕,并且没有出现异常时,业务同步线程会自动销毁本地磁盘数据,然后完成数据同步工作。

本发明的另一目的在于提供一种用于实现上述方法的基于多线程机制的分布式数据同步系统,该系统包含的功能模块为:数据分析功能模块、线程管理模块、数据处理模块及线程业务处理模块;

所述数据分析功能模块用于差异数据的捕获,捕获并处理在终端分支服务器上对业务数据操作产生的差异数据。主服务程序通过监听器监听用户的请求行为,当终端用户发出修改请求时被监听到,此时主服务程序通过触发器触发线程工厂(即线程管理模块)创建业务同步线程。并对用户的请求进行行为分析,初步得出在当前分布式终端所产生的同步数据包;

所述线程管理模块用于在线程工厂创建线程之前,由线程计数器判断当前服务器业务同步线程数,当业务同步线程数大于N(N的值根据系统通常状态下的并发请求数与网络吞吐量,在系统中人为设定)时会拒绝创建业务同步线程,并提示“数据库连接异常”。若业务同步线程数小于N,则线程工厂会判断目前运行的线程数并进入线程创建等待状态。线程工厂在创建业务同步线程时,会根据当前业务流程的需要创建满足用户请求的业务同步线程,并根据用户请求所传的数据类型将数据分配给对应的业务同步线程。

所述数据处理模块用于对数据进行包装和整理,对所捕获的差异数据进行处理,产生格式化差异数据表或者能够直接运行的SQL语句。当前运行的主服务响应用户请求,同时所产生的差异数据会存储在临时数据集中。业务同步线程对数据集中的数据逐条分析并将其转化为对应可执行的SQL语句,为保证数据在后续的传输过程中不出现丢失将处理后的数据包持久化到本地磁盘存储。在本地磁盘文件中存储了所需同步终端的数据库配置信息以及整理后的同步数据SQL;

所述线程业务处理模块用于当业务同步线程本地持久化数据之后就会脱离当前主服务的控制,单独运行,随后读取持久化到磁盘中的文件数据,根据所存储的各终端数据库信息以直连的方式连接到各终端数据库。数据传输过程中若出现异常,业务同步线程会延迟数秒后重新启动,待到数据全部传输完毕,并且没有出现异常时,业务同步线程会自动销毁本地磁盘数据,然后完成数据同步工作。

本发明对比现有技术,有如下优点:

本发明在传统分布式数据同步技术中使用了多线程机制,对不同批次的数据同步请求创建了独立的业务同步线程,避免了在一次数据同步任务完成之前其它所有请求必须等待的不足,充分利用系统服务器的运算能力及网络资源。多个线程可分别对不同目标数据库或服务器进行数据传输,在处理速度和响应速度上做到了大幅度的提升。

附图说明

图1为本发明分布式数据同步原理;

图2为本发明基于多线程分布式数据同步方法架构图;

图3为本发明多线程实现分布式数据同步流程图;

图4为本发明分布式数据同步系统的部署结构图。

具体实施方式

在分布式系统架构中,实现多线程分布式数据同步方法的处理模块如图2所示:

本发明提供一种基于多线程的分布式数据同步方法及其系统,方法实现的具体流程如图3所示,本方法主要是针对由于网络、地域或数据量庞大等因素致使系统分布式部署的保持数据一致解决方法。分布式数据同步系统的部署结构图如图4所示,其中任一分布式终端都可以作为发起数据同步请求的主服务端。

本发明的同步方法包括如下步骤:

步骤A:差异数据捕获步骤,捕获并处理在终端分支服务器上对业务数据操作产生的差异数据。主服务程序通过监听器监听用户的请求行为,当终端用户发出修改请求时被监听到,此时主服务程序通过触发器触发线程工厂(即线程管理模块)创建业务同步线程。并对用户的请求进行行为分析,初步得出在当前分布式终端所产生的同步数据包。所述主服务就是当前用户的操作请求。

其中,在用户发起请求之前每个分布式终端的本地磁盘都要具有各终端服务系统的数据库配置信息,任一终端用户发起增加、修改或删除请求时,主服务负责响应,在主服务线程开启时系统会分配其一个临时数据集,所述临时数据集是存储用户一次操作请求所产生的异动数据。监听与触发程序负责将分析模块与线程管理模块关联,如所述步骤B中,用户操作触发创建业务同步线程。如图3所示,在线程工厂(线程管理模块)中添加了同步任务计数器,对于系统开销达到不同阶段的任务进行分流和缓冲处理,根据当前运行线程数确定是否创建对应业务同线程-n以及同步线程等待时间,同时主服务根据当前业务将临时数据集中的数据分配给对应的业务同步线程。

步骤B:为了保证多线程条件下系统运行可靠。在线程工厂创建线程之前,由线程计数器判断是否可继续创建线程。若业务同步线程数大于N(N的值根据系统通常状态下的并发请求数与网络吞吐量,在系统中人为设定)时,线程工厂则拒绝创建业务同步线程,并提示“数据库连接异常”;若业务同步线程数小于N,则线程工厂继续判断目前运行的线程数并进入线程创建等待状态。

其中,线程工厂在创建业务同步线程时,会根据当前业务流程的需要创建满足用户请求的业务同步线程,并根据用户请求所传的数据类型将数据分配给对应的业务同步线程。

线程数与等待时间关系如图2所示,为了保证业务同步线程在传输数据过程中数据不丢失,将临时数据集中的数据本地磁盘存储,业务同步线程会将数据集中的数据进行逐条分析,转化为对应的可执行SQL语句并持久化到当前服务器磁盘中(采用此种方式主要是考虑到数据在持久化到本地磁盘的过程中可能会出现错误,所以为了避免在持久化过程中出现数据丢失,在此之前主服务需要一直等待业务线程处理)。若此时其它分布式终端还有数据同步请求,在当前业务同步线程没有脱离主服务控制之前,其它数据同步请求需要排队等待。在业务同步线程本地持久化数据完毕后将脱离服务控制,随后独立运行读取持久化到磁盘中的各终端数据库服务器配置信息。此时主服务即可响应其它终端的业务同步请求。线程业务处理模块分析需要数据同步的分布式终端系统数目,并负责根据数据库配置信息远程连接数据库服务器,将本地磁盘文件数据同步到远程数据库服务器。

步骤C:对数据进行包装和整理,对所捕获的差异数据进行处理,产生格式化差异数据表或者能够直接运行的SQL语句。当前运行的主服务响应用户请求,同时所产生的差异数据会存储在临时数据集中。业务同步线程对数据集中的数据逐条分析并将其转化为对应可执行的SQL语句,为保证数据在后续的传输过程中不出现丢失将处理后的数据包持久化到当前服务器的本地磁盘中存储。在本地磁盘文件中存储了所需同步的分布式终端的数据库配置信息以及整理后的同步数据SQL。

若在业务同步线程传输数据的过程中出现异常,业务同步线程延迟数秒重新运行;若发生系统崩溃或者服务器宕(dang)机等情况,本地磁盘文件依然会保留在磁盘中,等待系统启动时会自动进入到相关磁盘进行验证,如在系统宕机或服务崩溃前存在未完成的数据同步工作,那么系统会自动将这部分工作进行第二次传输,直到全部数据传输完毕。

步骤D:当业务同步线程本地持久化数据之后就会脱离当前主服务的控制,单独运行,随后读取持久化到本地磁盘中的文件数据,根据所存储的各终端数据库信息以直连的方式连接到各终端数据库。数据传输过程中若出现异常,业务同步线程会延迟数秒后重新启动,待到数据全部传输完毕,并且没有出现异常时,业务同步线程会自动销毁本地磁盘数据,然后完成数据同步工作。

本发明的分布式数据同步系统包含的功能模块为:数据分析功能模块、线程管理模块、数据处理模块及线程业务处理模块;

所述数据分析功能模块用于差异数据的捕获,捕获并处理在终端分支服务器上对业务数据操作产生的差异数据。主服务程序通过监听器监听用户的请求行为,当终端用户发出修改请求时被监听到,此时主服务程序通过触发器触发线程工厂(即线程管理模块)创建业务同步线程。并对用户的请求进行行为分析,初步得出在当前分布式终端所产生的同步数据包;

所述线程管理模块用于在线程工厂创建线程之前,由线程计数器判断当前服务器业务同步线程数,当业务同步线程数大于N(N的值根据系统通常状态下的并发请求数与网络吞吐量,在系统中人为设定)时会拒绝创建业务同步线程,并提示“数据库连接异常”。若业务同步线程数小于N,则线程工厂会判断目前运行的线程数并进入线程创建等待状态,线程数与等待时间关系如图2所示。线程工厂在创建业务同步线程时,会根据当前业务流程的需要创建满足用户请求的业务同步线程,并根据用户请求所传的数据类型将数据分配给对应的业务同步线程。

所述数据处理模块用于对数据进行包装和整理,对所捕获的差异数据进行处理,产生格式化差异数据表或者能够直接运行的SQL语句。当前运行的主服务响应用户请求,同时所产生的差异数据会存储在临时数据集中。业务同步线程对数据集中的数据逐条分析并将其转化为对应可执行的SQL语句,为保证数据在后续的传输过程中不出现丢失将处理后的数据包持久化到本地磁盘存储。在本地磁盘文件中存储了所需同步终端的数据库配置信息以及整理后的同步数据SQL;

所述线程业务处理模块用于当业务同步线程本地持久化数据之后就会脱离当前主服务的控制,单独运行,随后读取持久化到磁盘中的文件数据,根据所存储的各终端数据库信息以直连的方式连接到各终端数据库。数据传输过程中若出现异常,业务同步线程会延迟数秒后重新启动,待到数据全部传输完毕,并且没有出现异常时,业务同步线程会自动销毁本地磁盘数据,然后完成数据同步工作。

本发明的实施方式不限于此,在本发明上述基本技术思想前提下,按照本领域的普通技术知识和惯用手段对本发明内容所做出其它多种形式的修改、替换或变更,均落在本发明权利保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号