一种服务器数据自动同步方法与流程

文档序号:14843670发布日期:2018-06-30 14:31阅读:275来源:国知局
一种服务器数据自动同步方法与流程

本发明涉及一种服务器数据自动同步方法。



背景技术:

随着网络的普及与发展,在网络上用户可以获取大量的信息,同时也可以把自己所拥有的信息资源共享给其他的网络用户。目前在Internet中大都采用C/S结构,其最重要的特点是非对等相互作用,服务器拥有客户机所不具备的各种软硬件资源和运算处理能力。

然而由于服务器的负载原因,我们常常需要使用多台服务器进行客户端信息进行管理,因而如何实现多台服务器之间的数据同步,成为问题的关键。

客户机登陆的服务器不同,因此一般情况下客户机只能够得到当前服务器上的信息,因此当前服务器如何与其他服务器同步成为问题的关键。

由于同步的实时性要求根据需要有所不同,服务器能够承载的最大负荷也有所不同。一般来说,实时性要求越高,为了数据同步所做的工作就越多,而其能够承载的最大负荷也就越少。



技术实现要素:

为了解决上述传统问题,因此本发明的一个目的就是提出了一种服务器数据自动同步方法。

在一个方面中,提出了一种服务器数据自动同步方法,所述每个服务器包括操作流水线表,该操作流水线表包括用户字段,该用户字段包括UserInfo用户信息字段以及与UserInfo用户信息字段相对应的OpNum字段,该方法包括步骤:A、服务器定时轮询另一服务器;B、当所述服务器轮询到所述另一服务器上的操作流水线表发生变化时,所述服务器查找自己的操作流水线表,获得该操作流水线表中的最大OpNum,并且将所获得的最大OpNum发送到所述另一服务器;C、所述另一服务器接收所述服务器的操作流水线表中的最大OpNum,查找自己的操作流水线表,并且将自己的操作流水线表中的相应OpNum比所接收到的所述服务器的最大OpNum要大的UserInfo传送到所述服务器;以及D、所述服务器重写UserInfo并且将其相应OpNum设置为所述服务器中的操作流水线表中的最大OpNum加1。

在这个方面中,其中其中当所述另一服务器上的登陆用户信息改变时,所述另一服务器将UserInfo改变的相应OpNum设置为该服务器的操作流水线表中的最大OpNum加1。

在这个方面中,其中当有新的用户登陆所述另一服务器上时,所述另一服务器在操作流水线表的未被分配的空间中为新登陆用户创建新的字段,将新登陆用户的信息写入到UserInfo字段中,并且将其相应OpNum设置为该另一服务器的操作流水线表中的最大OpNum加1。

在这个方面中,其中步骤D进一步包括:所述服务器在该操作流水线表的未被分配的空间中为新登陆用户创建新的字段,将新登陆用户的信息写入到UserInfo字段中,并将其相应OpNum设置为该服务器的操作流水线表中的最大OpNum加1。

在这个方面中,其中该操作流水线表还包括OpNo序列号字段,其中每个OpNo索引至相应的用户字段。

在这个方面中,其中用户字段还包括服务器标志位字段,该服务器标志位字段用于标识相应用户是从哪台服务器登陆的。

通过本发明,可在多台服务器上进行数据同步,实时性较高,基本相当于不同步时的承载负荷,最终使每台服务器上都有所有用户的信息。

附图说明

结合随后的附图,从下面的详细说明中可显而易见的得出本发明的上述及其他目的、特征及优点。在附图中:

图1示例性地给出了进行数据同步的多台服务器;

图2示例性地给出了用户信息改变前的服务器操作流水线表;

图3示例性地给出了用户信息改变后的服务器操作流水线表;

图4示例性地给出了同步前的服务器1操作流水线表;

图5示例性地给出了同步前的服务器2操作流水线表;

图6示例性地给出了用户信息改变后的服务器1操作流水线表;

图7示例性地给出了同步后的服务器2操作流水线表;以及

图8示例性地给出了释放存储空间的示例。

具体实施方式

在下文中将详细地论述的,本公开可以采用完全硬件的实施例、完全软件的实施例或包括硬件和软件元件两者的实施例的形式。在优选实施例中,本公开可以用软件来实施,其可以包括但不局限于固件、驻留软件、微码等等。

现在参考附图,对本发明的原理进行详细的说明。

如图1所示,服务器甲、乙、丙进行数据同步,当然对于本领域普通技术人员来说这仅是示例性的,并非局限于此。每个服务器中都有一个存储部分,该存储部分中存储了每个服务器的操作流水表。

下面以服务器甲为例来对操作流水线进行说明。

如图2所示,该操作流水表主要包括OpNo(序列号)字段和用户字段,而用户字段包括UserInfo(用户信息)字段、OpNum(项值)字段、以及服务器标志位字段。

OpNo指UserInfo信息存放的序号并且是由1,2,...,N这样的整数来表示的,每个OpNo与相应的用户字段相对应。OpNo.1索引至OpNum是最小值的用户字段,OpNo.2索引至OpNum是次小值的用户字段,......,依次类推,OpNo.N索引至OpNum是最大值的用户字段。

UerInfo中包含了用户的各种信息。OpNum的初始值为0,当第一次用户信息发生变化时,该OpNum值为1。当然对于本领域普通技术人员来说,OpNum的初始值并不局限于此,也可以为任何整数。

当用户状态或信息改变的时候,OpNum的最大值加1。

在各个服务器中,UserInfo信息是乱序存放的,排序的是UserInfo信息存放的序号即OpNo,然后可以根据此序号作为索引来找到相应的UserInfo信息。

服务器标志位字段用于标识相应UserInfo的用户是从哪台服务器登陆的。如图2所示,服务器标志位字段“甲”表示用户A、B、D是从服务器甲登陆的,服务器标志位字段“乙”表示用户C是从服务器乙登陆的,并且服务器标志位字段“丙”表示用户N是从服务器丙登陆的。

接下来,首先先描述当某个登陆用户的状态或信息改变时,当前服务器中的操作流水线怎样变化。

当某个用户状态或信息改变的时候,使其相应OpNum变为:操作流水线中的OpNum的最大值+1,然后改变OpNo的排序状态。

具体地说,在图2的情况下,OpNum的最大值是25。如果用于D的信息(UserInfoD)发生了变化,那么得到图3的结果。即OpNum的最大值加1(=26),并将其写入到UserInfoD的相应OpNum(=26)。此后,改变OpNo的排序状态,即OpNo.1仍索引至OpNum是最小值10的用户字段,OpNo.2仍索引至OpNum是次小值11的用户字段,OpNo.3仍索引至OpNum是第三小值21的用户字段,但是由于此时OpNum的最大值是26而不是25,因此OpNo.4索引至OpNum是第四小值25的用户字段,依次类推,OpNo.N索引至OpNum是最大值26的用户字段(UserInfoD:用户D)。也就是说,此时OpNo.N始终索引至用户状态或信息发生了变化的用户字段,即指向OpNum是最大值的用户字段。

上面说明了当单个服务器上的登陆用户信息或状态发生变化时,该服务器上的操作流水线表的变化。

应该说明的是,OpNo(序列号)字段和服务器标志位字段并不是必要的,该OpNo(序列号)字段仅是由于OpNo.N始终索引至用户状态或信息发生了变化的用户字段,即指向OpNum是最大值的用户字段,因此可提高效率。因此,在以下描述中,为了重点说明,省去对OpNo的重新排序步骤。

此外,新增用户的机制与用户状态改变操作类似,重要的是将新用户信息存储到未被分配的空间。

例如,此时,如果服务器甲新登陆了用户G,那么服务器在操作流水线表的未被分配的空间中为用户G创建新的字段,将用户G的信息写入到UserInfoG字段中,并且将其相应OpNum设置为OpNum的最大值+1(=27)。

下面以示例的方式对两台服务器之间的数据同步过程进行详细的说明。为了简单期间,假定用户服务器1上的操作流水线如图4所示,假定服务器2上的操作流水线如图5所示。

用户A、B、C是从服务器1登陆的,而用户E、F是从服务器2登陆的。

当服务器1上的用户信息C发生变化时,如前所述,服务器1查找其操作流水表,获得OpNum的最大值为5,使OpNum的最大值加1,并且将其结果OpNum(=6)回写到用户C所对应的OpNum字段。

与此同时,如果服务器1上新登陆了用户G,那么服务器1在操作流水线表的未被分配的空间中为用户G创建新的字段,将用户G的信息写入到UserInfoG字段中,并且将其相应OpNum设置为OpNum的最大值+1(=7),此时服务器1上的操作流水表变为如图6所示。

服务器2定时轮询服务器1,当服务器2发现服务器1上的操作流水线表发生了变化时,服务器2查找自己的操作流水线表,获得该操作流水线表中的最大OpNum,并且将所获得的最大OpNum发送到服务器1。具体地说,例如,服务器2查找该存储区中的操作流水线表,如图4所示,并且获得最大OpNum(=5),并将该最大OpNum(=5)发送到服务器1。

服务器1接收该最大OpNum(=5),查找自己的操作流水线表,并且将自己的操作流水线表中的相应OpNum比所接收到的服务器2的最大OpNum要大的UserInfo传送到服务器2。具体地说,如图6所示,用户C的OpNum(=6)和用户G的UserInfoG(=7)大于所接收到的服务器2的最大OpNum(=5),因此将UserInfoC和UserInfoG的发送到服务器2。

服务器2按照上述操作以重写UserInfoC并且将其相应OpNum设置为OpNum的最大值+1(=6),并且发现G是新登陆到服务器1上的用户,且同样按照上述操作,在操作流水线表的未被分配的空间中为用户G创建新的字段,将用户G的信息写入到UserInfoG字段中,并且将其相应OpNum设置为OpNum的最大值+1(=7)。

至此完成了服务器1与服务器2之间的信息同步。

同样,当服务器2上的信息发生变化时,按照如上相同的方式将服务器2上的信息同步到服务器1。

此外,优选地,为了如随后所述的释放存储空间,在每次同步的过程中,在服务器1上还要记录从服务器1同步到服务器2上的数据在服务器1的操作流水线中的OpNum最大值。具体地说,例如,从图7可知从服务器1同步到服务器2的数据有A、B、C、G,并且从图6可知这四个数据在服务器1的操作流水线中的OpNum的最大值是7,那么在服务器1上记录OpNum1(2)=7,其中1表示服务器1,2表示服务器2,7表示从服务器1同步到服务器2上的数据在服务器1的操作流水线中的最大值。

另外,优选地,同样为了如随后所述的释放存储空间,在服务器1上还要记录从服务器2同步到服务器1上的数据在服务器2的操作流水线中的OpNum最大值。从图4、5中可知,E、F是从服务器2同步到服务器1上的数据,而这两个数据在服务器2上的OpNum最大值为2,因此在服务器1上记录OpNum2(1)=2。

当然,对于存在多台服务器的情况,那么对于这多台服务器的每一个而言,这一个服务器上都要记录从该服务器同步到其它服务器的每一个上的数据在该服务器上的操作流水线中的最大OpNum值,并且还要记录从其它服务器的每一个同步到该服务器上的数据在该其它服务器的操作流水线中的最大OpNum值。

此外,还需说明的是,在初始化时,在两个服务器上仅记录了各自登陆用户的情况下,在这两个服务器之间首次进行相互数据同步时,在一个服务器轮询到另一服务器上的操作流水线表变化时,这个服务器不是发送最大OpNum,而是发送OpNum=0的信号。

例如,在服务器1中仅有登陆用户A,那么其相应OpNum=1。在服务器2中仅有登陆用户B,那么同样其相应OpNum=1。在服务器2轮询到服务器1上的操作流水线表发生变化时,即轮询到服务器1上有新登陆用户A时,服务器2向服务器1发送OpNum=0的信号。此后按照与上述相同的操作,服务器1接收该OpNum,查找自己的操作流水线表,并且将自己的操作流水线表中的相应OpNum比所接收到的OpNum要大的UserInfoA传送到服务器2。按照与上述相同的操作,服务器2在操作流水线表的未被分配的空间中为用户A创建新的字段,将用户A的信息写入到UserInfoA字段中,并且将其相应OpNum设置为OpNum的最大值+1(=2),此后改变OpNo的排序状态。

此时,在服务器2的操作流水线表中,UserInfoA(OpNum=2),UserInfoB(OpNum=1)。如果此时在服务器1轮询到服务器2有新登陆用户B时,服务器1向服务器2发送OpNum=0的信号。此后的操作与上述相同。优选地,在这次同步过程中,还可以使用服务器标志字段以仅将例如在服务器2上登陆的用户信息UerInfoB同步到服务器1中,这避免了将已同步的UerInfoA再次发送回服务器1。

当某用户离线的时候,存储此用户信息的空间需要释放,但由于同步的缘故,也就是说,有可能该用户信息没有同步到其它服务器上,因此不能马上释放此用户的空间,但可以根据正在与本机同步的所有机器的最小OpNum(相对于本机的操作流水表),一旦发现某个UserInfo的OpNum小于这个最小OpNum(并且状态是可释放状态才可以),则即可将此UserInfo的存储空间释放。

如图8所示,假设服务器1的操作流水表中有两个离线用户的OpNum值分别为10,13,由于操作流水表1以及其中对应的OpNum1(2)与OpNum1(3)中的最小值为11,因此OpNum为10的用户是已经在所有机器上同步过的,是可以释放其存储空间的,而OpNum为13的用户,由于OpNum1(2)比13小,说明OpNum为13的用户信息在服务器2上尚未同步,因此不能释放其存储空间。

从以上描述可知,通过本发明,解决由于服务器负载均衡的原因而导致的服务器上的用户信息不完全,客户端以此可以获得完整的在线用户信息,实现服务器组对于客户端的透明性,使得客户端不用连接多台服务器已取得相应的资源信息。同步时效性高。用户资源还可以通过共享的方式(比如p2p技术)使它们可以成为其他用户所能应用的资源。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1