基于同步ack的多终端数据同步方法

文档序号:9237893阅读:870来源:国知局
基于同步ack的多终端数据同步方法
【技术领域】
[0001]本发明涉及到计算机工程技术应用领域,更具体地,是针对一种基于同步ACK校正的数据同步方法。
【背景技术】
[0002]随着云计算的不断发展,分布式系统的思想也慢慢开始深入到各个系统中,分布式系统包括分布式操作系统,分布式程序设计语言及编译解释系统、分布式文件系统和分布式数据库系统等。分布式系统最大的特点就是进程之间的高并发处理以及保证数据的可靠性和可用性。高并发需要进行数据之间的实时同步,可靠性需要多服务器数据备份,这样当某个服务器数据出现问题后能进行恢复,这就带来了服务器之间数据存储同步的问题,这也是分布式系统中得巨大挑战。
[0003]现有的分布式服务器之间的存储分布式已经比较成熟了,主要包括分布式文件系统,分布式键值系统,分布式表格系统及分布式数据库,这些分布式存储系统通过一定的分布式协议进行服务端之间的数据同步,其策略基本上是通过一致性哈希算法,在指定服务器之间进行数据备份及同步。
[0004]但是在一些特殊情况下,终端数据库需要与服务器之间进行数据同步,这样确保终端在断网情况下能够依赖本地数据继续运行。且需要尽量与服务端的数据一致,这就需要系统在重新联网后同步获取服务端产生的所有新数据。
[0005]虽然服务器之间的数据同步方案相对比较成熟了,基本上是通过节点同步合并、I/o容错及分布式协议恢复,但是对于终端数据同步方案却还不是很成熟。因为多终端之间无法像服务器一样直接进行通信同步,而需要统一通过服务器进行同步,这样就给服务器带来了巨大压力。如果通过数据库同步的话,其基本原理是通过传输目的数据库的历史操作日志进行原数据库与目的数据库之间的信息同步的。这需要保证两个数据库表格属性的完全一致性。
[0006]怎样实现多个终端与服务端之间的数据同步方案,在保证数据同步完全可靠的情况下提高数据同步的效率,保证终端之间数据的实时更新,是当前尚未解决的技术问题。

【发明内容】

[0007]本发明解决的技术问题在于:实现多终端情况下的服务端数据同步,保证终端在联网状态下能获取最新数据,并在断网重连后同步最新的数据。
[0008]本发明进一步解决的问题在于:在保证数据可靠的基础上,大幅度提高数据同步的效率。
[0009]本发明的技术方案提供一种基于同步ACK的多终端数据同步方法,在服务端和各终端分别维持各自最新的传输控制字符序号,将服务端的传输控制字符序号记为ACK,将服务端的传输控制字符序号记为EACK,所述传输控制字符序号根据数据的序列号取值;设有N个终端,分别记为终端1、终端2.....终端N,同步实现方式如下, 首先,启动服务端,进行初始化,包括读入传输控制字符序号ACK的最新值;分别启动终端1、终端2.....终端N,各终端分别初始化,包括读入各自传输控制字符序号EACK1'
EACK2,...、EACK1^最新值;
当某终端I有新增的数据时,将数据发往服务端,服务端将该数据做持久化存储,并更新服务端ACK值,ACK=ACK+1 ;服务端将接收到的数据,添加最新的ACK值后广播下发给各个终端1、终端2、...、终端N ;
任一终端J收到服务端下发的数据后,解析获取下发数据的ACK值,将收到的ACK值与本地EACK1值进行比较,判断是否ACK等于本地EACK τ值加I,
是则,终端J将该数据更新至本地,并更新EACK1值,EACK J=EACKj +1,
否则,终端J丢弃该数据,将包括本地EACK1值的同步请求上传给服务端;服务端在接收到终端J的同步请求后,对同步请求进行解析,获取需要同步的EACh值,并从持久化存储的数据中获取传输控制字符序号取值为EACKfl至ACK的所有数据,然后发送给终端J,终端J接收到数据后更新本地数据,并更新EACKj值,EACK J=EACK1 +1。
[0010]而且,服务端在同一时刻最多只接收一个终端上传数据的请求,在服务端设置一个先入先出的队列,各请求按时间顺序被加入队列的末端,服务端从该队列的首端依次取出请求进行处理。
[0011]本发明是通过维护终端与服务端的一致性ACK值来实现多终端与服务器之间的数据完全同步,且保证数据传输的可靠高效性。与现有技术相比,本发明的优点在于:
(1)本发明只需要维护ACK值,实现简单,计算效率高;
(2)本发明每次数据同步只需要发送有效数据,极大提高同步的效率,节省了通信带宽,并挺高了系统的鲁棒性;
(3 )通过维护ACK值可以实现数据的完全同步。
【附图说明】
[0012]图1是本发明实施例的系统应用示意图。
[0013]图2是本发明实施例的基本流程图。
【具体实施方式】
[0014]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施案例,并参照附图,对本发明进一步详细说明。
[0015]本发明采用的技术方案是:在服务端和客户端(即终端)各维持各自最新的ACK值(终端的可称作EACK,以和服务端ACK做区分),传输控制字符序号ACK取值可采用数据的序列号(即数据次序),称为传输控制字符序号。即将服务端的传输控制字符序号记为ACKJf服务端的传输控制字符序号记为EACK。
[0016]参见图2,本发明实施例的流程包括以下步骤:
首先,启动各个终端和服务端,分别读入当前的ACK值进行初始化,终端的初始化结果作为本地的EACK值存储;
当任一终端上传数据到服务端后,服务端更新ACK值,可采用简单的自增加,即ACK=ACK+!。服务端将该条上传的数据与更新的ACK值做持久化存储,并将此条数据与更新的ACK值一起进行广播;
各终端接收到广播的数据后,分别执行的处理为:解析获取ACK值,与本地EACK值进行比较,如果接收到的ACK等于更新后EACK的值(即EACK+1),则按此条数据进行更新本地数据,并更新EACK值(即EACK+1),否则丢弃数据并将本地EACK值发给服务端请求数据同步,服务端将EACK至接收到的ACK之间的所有数据信息作为同步数据传输给终端,终端更新本地数据,并更新EACK值(即接收到的ACK)。完成终端与服务器的数据同步。
[0017]具体实施时,在终端更新本地数据后,终端可判断是否继续实施数据同步,是则服务端继续与终端保持数据同步策略,接收终端的数据上传并广播,否则服务端结束与该终端的数据同步。
[0018]具体实施时,设同步系统中有N个终端,终端1、终端2、...、终端N,相应可设计流程为:
(O启动服务端,进行初始化,包括读入传输控制字符序号ACK的最新值;
(2)分别启动终端1、终端2.....终端N,各终端分别初始化,包括读入各自传输控制字符序号 EACKp EACK2、...、EACK1^最新值;
(3)当某终端I(I的取值范围为1,2,...,N)有新增
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1