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

文档序号:9237893阅读:来源:国知局
数据时,将数据发往服务端,服务端将数据做持久化存储,并更新服务端ACK值,即ACK=ACK+1 ;
(4)服务端将接收到的数据,添加最新的ACK值后广播下发给各个终端1、终端2.....终端N ;
(5)任一终端J(J=I, 2,..., N)收到服务端下发的数据后,解析获取下发数据的ACK值,将收到的ACK值与本地EACK1值进行比较;
(6)如果ACK=更新后的EACh值(即本地EACK ^直+1),则终端J将该数据更新至本地,进入步骤(9 ),否则终端J丢弃该数据,进入步骤(7 );
(7)终端J将包括本地EACKj值的同步请求上传给服务端,进行数据同步请求;
(8)服务端在接收到终端J的同步请求后,对同步请求进行解析,获取需要同步的EACKj值,并从持久化存储的数据中获取EACKj至ACK之间的所有数据(即EACKfl至ACK的数据),然后可打包发送给终端J,终端J接收到数据后更新本地数据,即根据新得到的EACKfl至ACK的数据,实现数据同步;
(9)更新EACKj值,即 EACK J=EACKj +1。
[0019]具体实施时,根据需要可以连续进行步骤(3)到步骤(9)从而保证终端1、终端2.....终端N之间的数据完全同步。
[0020]参见图1,根据以上流程,实际工作步骤举例如下:
(1)开启服务端,从服务端的持久化文件中读取服务端当前最新数据,根据文件内容初始化服务端ACK值,设此时ACK=y,开启数据发送、接收服务,等待接收终端数据;
(2)开启终端1、终端2.....终端N,各终端从各自持久化文件中读取当前最新数据,并初始化各终端EACK1、EACK2.....EACKN值,开启各自数据接收、发送服务,等待向服务端发送数据;例如 EACK1=Y、EACK2=Y, EACK3=y_k、..., EACKn
(3)终端I上传数据(包括信息MSG)至服务端;
(4)服务端接收到终端I发送上来的数据(包括信息MSG)后,ACK++,将数据(包括信息MSG,同时附带ACK=y+l)进行广播,将该信息下发到所有开启并运行正常的终端;终端I本身可以不重复更新,只更新本地EACK=y+l,终端2.....终端N接收到服务端的广播数据后,
判断ACK是否等于相应终端EACK加I,是则进行数据更新,并更新本地EACK值等于ACK,若否则,则丢弃数据,发起同步请求以请求数据更新同步,以达到各个终端站点数据的实时同步。例如终端3之前与服务端的连接中断一段时间后才恢复与服务端的连接,导致与服务端数据不同步,此时EACK3=y-k,终端3接收到最新ACK后,检测到这个ACK值与当前的EACK3值不一致,EACK3=ACK-l-k,表明该终端之前丢失了 k条记录,请求数据同步。服务端接收到终端3的同步请求消息后,读取同步请求中的EACK3字段,将EACK3之后的所有数据(k+Ι条)打包发送终端3。终端3更新接收到的k+Ι条数据,并更新本地EACK值等于ACK。
[0021]具体实施时,各终端保持与服务端的连接,各自在随机时间向服务端发送上传数据的请求,服务端在同一时刻最多只接收一个终端的请求,为了处理避免多终端请求造成重叠,可以设置各请求按时间顺序被加入服务端设置的一个先入先出(FIFO, First-1n-First-Out)的队列的末端。服务端从该队列的首端依次取出请求,向对应的终端发出允许上传数据的指令,该终端收到指令后向服务端上传数据,这样各终端都能和服务端保持同步且避免多终端同步冲突。在队列中的请求处理完成后,服务端继续等待各终端发送数据或数据同步请求。
[0022]可见,本发明采用同步ACK机制实现数据的完全同步,解决数据同步的可靠性及尚效性。
[0023]上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其它的任何未违背本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化均应为等效的置换方式,都包含在本发明的保护范围之内。
【主权项】
1.一种基于同步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。2.根据权利要求1所述基于同步ACK的多终端数据同步方法,其特征在于:服务端在同一时刻最多只接收一个终端上传数据的请求,在服务端设置一个先入先出的队列,各请求按时间顺序被加入队列的末端,服务端从该队列的首端依次取出请求进行处理。
【专利摘要】本发明提供一种基于同步ACK的多终端数据同步方法,在服务端和各终端分别维持各自最新的传输控制字符序号,首先启动服务端并读入传输控制字符序号的最新值,分别启动各终端读入各自传输控制字符序号的最新值;当某终端有新增的数据时,将数据发往服务端,服务端将该数据存储并更新服务端传输控制字符序号,广播下发给各个终端;任一终端收到服务端下发的数据后,解析获取下发数据的传输控制字符序号,判断是否等于本地传输控制字符序号值加1,是则将该数据更新至本地并更新本地传输控制字符序号值,否则丢弃该数据,将包括本地传输控制字符序号值的同步请求上传给服务端,从服务端获取相应数据后更新本地数据并更新本地传输控制字符序号值。<b/>
【IPC分类】H04L29/08, H04L1/16
【公开号】CN104954101
【申请号】CN201510442329
【发明人】吴钊, 胡春阳, 谷琼
【申请人】湖北文理学院
【公开日】2015年9月30日
【申请日】2015年7月24日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1