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

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

【技术领域】
[0001] 本发明涉及分布式数据的处理,具体来说涉及一种分布式数据的同步方法及其系 统。

【背景技术】
[0002] 随着互联网技术的发展,单一的数据存储方式已经不再能满足组织或个人对于数 据存储量、速度、安全性等方面的要求。为了保证数据存储的安全可靠性,读取速度提升、储 存量大等要求,分布式存储已经逐渐成为当前很多组织或个人的首选方案。在分布式系统 架构中,当用户界面需要操作或展示具体的业务数据信息时只需要到相应的分布式终端进 行查询,为网络传输减轻负担的同时提高总体系统效率。在某个终端数据更新之后,为保证 数据的一致性,差异数据要同步到其它各个终端服务器。分布式数据存储主要需解决的就 是各终端系统服务器之间的数据一致性问题,根据时间特征性数据同步可分为实时数据同 步和间歇性数据同步。
[0003] 分布式数据同步技术通过使各分布式终端的数据更新的同步,达到使数据分布存 放的目的,从而实现数据库的分布式处理应用,大大增加站点的自治性。分布式数据同步方 法中数据传输安全性和数据同步效率是验证方案可行性的两大因素,为降低数据传输过程 中的风险和提高数据传输效率,发明一种高效且安全的分布式数据同步方法是有必要的。
[0004] 现今的分布式数据存储大多依靠产品或者服务本身对分布式环境下数据库服务 器的数据进行同步,在互联网应用中比较通用的数据传输方式为基于WebService的数据 同步机制。WebService实现数据同步原理如图1所示,SOAP消息文本数据携带较多的格式 数据,且此种方式必须依托某项特定的服务或者产品,无论是在传输过程中还是在终端接 受处理数据都会增加系统资源开销,影响传输效率的同时风险也随之增大。
[0005] 在当前【技术领域】下怎样使数据同步更加自动化、提高数据传输安全性及效率是数 据同步方案的度量标准。为解决以上所述问题,本发明提出多线程同步机制运用在分布式 数据同步方案中,安全性和效率性同时得到保证。


【发明内容】

[0006] 本发明的目的在于提供一种基于多线程机制的分布式数据同步方法,该方法利用 多线程同步机制使各分布式终端服务器之间的单个同步任务能够独立运行,使得数据能够 在不占用当前服务资源的情况下进行高效传输。
[0007] 本发明的目的可通过以下的技术措施来实现:
[0008] -种基于多线程机制的分布式数据同步方法,包括以下步骤:
[0009] 步骤A :差异数据捕获步骤,捕获并处理在终端分支服务器上对业务数据操作产 生的差异数据。主服务程序通过监听器监听用户的请求行为,当终端用户发出修改请求时 被监听到,此时主服务程序通过触发器触发线程工厂(即线程管理模块)创建业务同步线 程。并对用户的请求进行行为分析,初步得出在当前分布式终端所产生的同步数据包。所 述主服务就是当前用户的操作请求。
[0010] 步骤B :为了保证多线程条件下系统运行可靠。在线程工厂创建线程之前,由线程 计数器判断是否可继续创建线程。若业务同步线程数大于N(N的值根据系统通常状态下的 并发请求数与网络吞吐量,在系统中人为设定)时,线程工厂则拒绝创建业务同步线程,并 提示"数据库连接异常";若业务同步线程数小于N,则线程工厂继续判断目前运行的线程数 并进入线程创建等待状态。
[0011] 其中,线程工厂在创建业务同步线程时,会根据当前业务流程的需要创建满足用 户请求的业务同步线程,并根据用户请求所传的数据类型将数据分配给对应的业务同步线 程。
[0012] 步骤C :对数据进行包装和整理,对所捕获的差异数据进行处理,产生格式化差异 数据表或者能够直接运行的SQL语句。当前运行的主服务响应用户请求,同时所产生的差 异数据会存储在临时数据集中。业务同步线程对数据集中的数据逐条分析并将其转化为对 应可执行的SQL语句,为保证数据在后续的传输过程中不出现丢失将处理后的数据包持久 化到当前服务器的本地磁盘中存储。在本地磁盘文件中存储了所需同步的分布式终端的数 据库配置信息以及整理后的同步数据SQL。
[0013] 步骤D:当业务同步线程本地持久化数据之后就会脱离当前主服务的控制,单独 运行,随后读取持久化到本地磁盘中的文件数据,根据所存储的各终端数据库信息以直连 的方式连接到各终端数据库。数据传输过程中若出现异常,业务同步线程会延迟数秒后重 新启动,待到数据全部传输完毕,并且没有出现异常时,业务同步线程会自动销毁本地磁盘 数据,然后完成数据同步工作。
[0014] 本发明的另一目的在于提供一种用于实现上述方法的基于多线程机制的分布式 数据同步系统,该系统包含的功能模块为:数据分析功能模块、线程管理模块、数据处理模 块及线程业务处理模块;
[0015] 所述数据分析功能模块用于差异数据的捕获,捕获并处理在终端分支服务器上对 业务数据操作产生的差异数据。主服务程序通过监听器监听用户的请求行为,当终端用户 发出修改请求时被监听到,此时主服务程序通过触发器触发线程工厂(即线程管理模块) 创建业务同步线程。并对用户的请求进行行为分析,初步得出在当前分布式终端所产生的 同步数据包;
[0016] 所述线程管理模块用于在线程工厂创建线程之前,由线程计数器判断当前服务器 业务同步线程数,当业务同步线程数大于N(N的值根据系统通常状态下的并发请求数与网 络吞吐量,在系统中人为设定)时会拒绝创建业务同步线程,并提示"数据库连接异常"。若 业务同步线程数小于N,则线程工厂会判断目前运行的线程数并进入线程创建等待状态。线 程工厂在创建业务同步线程时,会根据当前业务流程的需要创建满足用户请求的业务同步 线程,并根据用户请求所传的数据类型将数据分配给对应的业务同步线程。
[0017] 所述数据处理模块用于对数据进行包装和整理,对所捕获的差异数据进行处理, 产生格式化差异数据表或者能够直接运行的SQL语句。当前运行的主服务响应用户请求, 同时所产生的差异数据会存储在临时数据集中。业务同步线程对数据集中的数据逐条分析 并将其转化为对应可执行的SQL语句,为保证数据在后续的传输过程中不出现丢失将处理 后的数据包持久化到本地磁盘存储。在本地磁盘文件中存储了所需同步终端的数据库配置 信息以及整理后的同步数据SQL ;
[0018] 所述线程业务处理模块用于当业务同步线程本地持久化数据之后就会脱离当前 主服务的控制,单独运行,随后读取持久化到磁盘中的文件数据,根据所存储的各终端数据 库信息以直连的方式连接到各终端数据库。数据传输过程中若出现异常,业务同步线程会 延迟数秒后重新启动,待到数据全部传输完毕,并且没有出现异常时,业务同步线程会自动 销毁本地磁盘数据,然后完成数据同步工作。
[0019] 本发明对比现有技术,有如下优点:
[0020] 本发明在传统分布式数据同步技术中使用了多线程机制,对不同批次的数据同步 请求创建了独立的业务同步线程,避免了在一次数据同步任务完成之前其它所有请求必须 等待的不足,充分利用系统服务器的运算能力及网络资源。多个线程可分别对不同目标数 据库或服务器进行数据传输,在处理速度和响应速度上做到了大幅度的提升。

【专利附图】

【附图说明】
[0021] 图1为本发明分布式数据同步原理;
[0022] 图2为本发明基于多线程分布式数据同步方法架构图;
[0023] 图3为本发明多线程实现分布式数据同步流程图;
[0024] 图4为本发明分布式数据同步系统的部署结构图。

【具体实施方式】
[0025] 在分布式系统架构中,实现多线程分布式数据同步方法的处理模块如图2所示:
[0026] 本发明提供一种基于多线程的分布式数据同步方法及其系统,方法实现的具体流 程如图3所示,本方法主要是针对由于网络、地域或数据量庞大等因素致使系统分布式部 署的保持数据一致解决方法。分布式数据同步系统的部署结构图如图4所示,其中任一分 布式终端都可以作为发起数据同步请求的主服务端。
[0027] 本发明的同步方法包括如下步骤:
[0028] 步骤A :差异数据捕获步骤,捕获并处理在终端分支服务器上对业务数据操作产 生的差异数据。主服务程序通过监听器监听用户的请求行为,当终端用户发出修改请求时 被监听到,此时主服务程序通过触发器触发线程工厂(即线程管理模块)创建业务同步线 程。并对用户的请求进行行为分析,初步得出在当前分布式终端所产生的同步数据包。所 述主服务就是当前用户的操作请求。
[0029] 其中,在用户发起请求之前每个分布式终端的本地磁盘都要具有各终端服务系统 的数据库配置信息,任一终端用户发起增加、修改或删除请求时,主服务负责响应,在主服 务线程开启时系统会分配其一个临时数据集,所述临时数据集是存储用户一次操作请求所 产生的异动数据。监听与触发程序负责将分析模块与线程管理模块关联,如所述步骤B中, 用户操作触发创建业务同步线程。如图3所示,在线程工厂(线程管理模块)中添加了同 步任务计数器,对于系统开销达到不同阶段的任务进行分流和缓冲处理,根据当前运行线 程数确定是否创建对应业务同线程-η以及同步线程等待时间,同时主服务根据当前业务 将临时数据集中的数据分配给对应的业务同步线程。
[0030] 步骤Β :为了保证多线程条件下系统运行可靠。在线程工厂创建线程之前,由线程 计数器判断是否可继续创建线程。若业务同步线程数大于N(N的值根据系统通常状态下的 并发请求数与网络吞吐量,在系统中人为设定)时,线程工厂则拒绝创建业务同步线程,并 提示"数据库连接异常";若业务同步线程数小于N,则线程工厂继续判断目前运行的线程数 并进入线程创建等待状态。
[0031] 其中,线程工厂在创建业务同步线程时,会根据当前业务流程的需要创建满足用 户请求的业务同步线程,并根据用户请求所传的数据类型将数据分配给对应的业务同步线 程。
[0032] 线程数与等待时间关系如图2所示,为了保证业务同步线程在传输数据过程中数 据不丢失,将临时数据集中的数据本地磁盘存储,业务同步线程会将数据集中的数据进行 逐条分析,转化为对应的可执行SQL语句并持久化到当前服务器磁盘中(采用此种方式主 要是考虑到数据在持久化到本地磁盘的过程中可能会出现错误,所以为了避免在持久化过 程中出现数据丢失,在此之前主服务需要一直等待业务线程处理)。若此时其它分布式终端 还有数据同步请求,在当前业务同步线程没有脱离主服务控制之前,其它数据同步请求需 要排队等待。在业务同步线程本地持久化数据完毕后将脱离服务控制,随后独立运行读取 持久化到磁盘中的各终端数据库服务器配置信息。此时主服务即可响应其它终端的业务同 步请求。线程业务处理模块分析需要数据同步的分布式终端系统数目,并负责根据数据库 配置信息远程连接数据库服务器,将本地磁盘文件数据同步到远程数据库服务器。
[0033] 步骤C :对数据进行包装和整理,对所捕获的差异数据进行处理,产生格式化差异 数据表或者能够直接运行的SQL语句。当前运行的主服务响应用户请求,同时所产生的差 异数据会存储在临时数据集中。业务同步线程对数据集中的数据逐条分析并将其转化为对 应可执行的SQL语句,为保证数据在后续的传输过程中不出现丢失将处理后的数据包持久 化到当前服务器的本地磁盘中存储。在本地磁盘文件中存储了所需同步的分布式终端的数 据库配置信息以及整理后的同步数据SQL。
[0034] 若在业务同步线程传输数据的过程中出现异常,业务同步线程延迟数秒重新运 行;若发生系统崩溃或者服务器宕(dang)机等情况,本地磁盘文件依然会保留在磁盘中, 等待系统启动时会自动进入到相关磁盘进行验证,如在系统宕机或服务崩溃前存在未完成 的数据同步工作,那么系统会自动将这部分工作进行第二次传输,直到全部数据传输完毕。
[0035] 步骤D:当业务同步线程本地持久化数据之后就会脱离当前主服务的控制,单独 运行,随后读取持久化到本地磁盘中的文件数据,根据所存储的各终端数据库信息以直连 的方式连接到各终端数据库。数据传输过程中若出现异常,业务同步线程会延迟数秒后重 新启动,待到数据全部传输完毕,并且没有出现异常时,业务同步线程会自动销毁本地磁盘 数据,然后完成数据同步工作。
[0036] 本发明的分布式数据同步系统包含的功能模块为:数据分析功能模块、线程管理 模块、数据处理模块及线程业务处理模块;
[0037] 所述数据分析功能模块用于差异数据的捕获,捕获并处理在终端分支服务器上对 业务数据操作产生的差异数据。主服务程序通过监听器监听用户的请求行为,当终端用户 发出修改请求时被监听到,此时主服务程序通过触发器触发线程工厂(即线程管理模块) 创建业务同步线程。并对用户的请求进行行为分析,初步得出在当前分布式终端所产生的 同步数据包;
[0038] 所述线程管理模块用于在线程工厂创建线程之前,由线程计数器判断当前服务器 业务同步线程数,当业务同步线程数大于N(N的值根据系统通常状态下的并发请求数与网 络吞吐量,在系统中人为设定)时会拒绝创建业务同步线程,并提示"数据库连接异常"。若 业务同步线程数小于N,则线程工厂会判断目前运行的线程数并进入线程创建等待状态,线 程数与等待时间关系如图2所示。线程工厂在创建业务同步线程时,会根据当前业务流程 的需要创建满足用户请求的业务同步线程,并根据用户请求所传的数据类型将数据分配给 对应的业务同步线程。
[0039] 所述数据处理模块用于对数据进行包装和整理,对所捕获的差异数据进行处理, 产生格式化差异数据表或者能够直接运行的SQL语句。当前运行的主服务响应用户请求, 同时所产生的差异数据会存储在临时数据集中。业务同步线程对数据集中的数据逐条分析 并将其转化为对应可执行的SQL语句,为保证数据在后续的传输过程中不出现丢失将处理 后的数据包持久化到本地磁盘存储。在本地磁盘文件中存储了所需同步终端的数据库配置 信息以及整理后的同步数据SQL ;
[0040] 所述线程业务处理模块用于当业务同步线程本地持久化数据之后就会脱离当前 主服务的控制,单独运行,随后读取持久化到磁盘中的文件数据,根据所存储的各终端数据 库信息以直连的方式连接到各终端数据库。数据传输过程中若出现异常,业务同步线程会 延迟数秒后重新启动,待到数据全部传输完毕,并且没有出现异常时,业务同步线程会自动 销毁本地磁盘数据,然后完成数据同步工作。
[0041] 本发明的实施方式不限于此,在本发明上述基本技术思想前提下,按照本领域的 普通技术知识和惯用手段对本
【发明内容】
所做出其它多种形式的修改、替换或变更,均落在 本发明权利保护范围之内。
【权利要求】
1. 一种基于多线程机制的分布式数据同步方法,其特征在于包括以下步骤: 步骤A :差异数据捕获步骤,捕获并处理在终端分支服务器上对业务数据操作产生的 差异数据;主服务程序通过监听器监听用户的请求行为,当终端用户发出修改请求时被监 听到,此时主服务程序创建业务同步线程,并对用户的请求进行行为分析,初步得出在当前 分布式终端所产生的同步数据包;所述主服务就是当前用户的操作请求; 步骤B :在线程管理模块创建线程之前,由线程计数器判断是否可继续创建线程;若业 务同步线程数大于N时,线程管理模块则拒绝创建业务同步线程,并提示"数据库连接异 常";若业务同步线程数小于N,则线程管理模块继续判断目前运行的线程数并进入线程创 建等待状态;所述N的值根据系统通常状态下的并发请求数与网络吞吐量,在系统中人为 设定; 步骤C :对数据进行包装和整理,对所捕获的差异数据进行处理,产生格式化差异数据 表或者能够直接运行的SQL语句;并且,当前运行的主服务响应用户请求,同时所产生的差 异数据会存储在临时数据集中,业务同步线程对数据集中的数据逐条分析并将其转化为对 应可执行的SQL语句,并将处理后的数据包持久化到当前服务器的本地磁盘中存储; 步骤D:当业务同步线程本地持久化数据之后就会脱离当前主服务的控制,单独运行, 随后读取持久化到本地磁盘中的文件数据,根据所存储的各终端数据库信息以直连的方式 连接到各终端数据库。
2. 根据权利要求1所述的方法,其特征在于:所述步骤A中,线程管理模块在创建业务 同步线程时,会根据当前业务流程的需要创建满足用户请求的业务同步线程,并根据用户 请求所传的数据类型将数据分配给对应的业务同步线程。
3. 根据权利要求1所述的方法,其特征在于:所述业务同步线程由主服务程序通过触 发器触发线程管理模块所创建。
4. 根据权利要求1所述的方法,其特征在于:所述步骤D中,所述本地磁盘文件中存储 了所需同步的分布式终端的数据库配置信息以及整理后的同步数据SQL。
5. 根据权利要求1所述的方法,其特征在于:所述步骤D中,连接到各终端数据库的数 据传输过程中若出现异常,业务同步线程会延迟数秒后重新启动,待到数据全部传输完毕, 并且没有出现异常时,业务同步线程会自动销毁本地磁盘数据,然后完成数据同步工作。
6. -种基于多线程机制的分布式数据同步系统,其特征在于:所述系统包含的功能模 块为数据分析功能模块、线程管理模块、数据处理模块及线程业务处理模块; 所述数据分析功能模块用于差异数据的捕获,捕获并处理在终端分支服务器上对业务 数据操作产生的差异数据;主服务程序通过监听器监听用户的请求行为,当终端用户发出 修改请求时被监听到,此时主服务程序通过触发器触发线程管理模块创建业务同步线程; 并对用户的请求进行行为分析,初步得出在当前分布式终端所产生的同步数据包; 所述线程管理模块用于在创建线程之前,由线程计数器判断当前服务器业务同步线程 数,当业务同步线程数大于N,时会拒绝创建业务同步线程,并提示"数据库连接异常";若业 务同步线程数小于N,则线程管理模块会判断目前运行的线程数并进入线程创建等待状态; 线程管理模块在创建业务同步线程时,会根据当前业务流程的需要创建满足用户请求的业 务同步线程,并根据用户请求所传的数据类型将数据分配给对应的业务同步线程; 所述数据处理模块用于对数据进行包装和整理,对所捕获的差异数据进行处理,产生 格式化差异数据表或者能够直接运行的SQL语句;当前运行的主服务响应用户请求,同时 所产生的差异数据会存储在临时数据集中;业务同步线程对数据集中的数据逐条分析并将 其转化为对应可执行的SQL语句,为保证数据在后续的传输过程中不出现丢失将处理后的 数据包持久化到本地磁盘存储;在本地磁盘文件中存储了所需同步终端的数据库配置信息 以及整理后的同步数据SQL; 所述线程业务处理模块用于当业务同步线程本地持久化数据之后就会脱离当前主服 务的控制,单独运行,随后读取持久化到磁盘中的文件数据,根据所存储的各终端数据库信 息以直连的方式连接到各终端数据库;数据传输过程中若出现异常,业务同步线程会延迟 数秒后重新启动,待到数据全部传输完毕,并且没有出现异常时,业务同步线程会自动销毁 本地磁盘数据,然后完成数据同步工作。
【文档编号】H04L29/08GK104219288SQ201410400698
【公开日】2014年12月17日 申请日期:2014年8月14日 优先权日:2014年8月14日
【发明者】朱永虎, 赵志勤, 朱金惟, 林玉凤 申请人:中国南方电网有限责任公司超高压输电公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1