加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 系统 > 正文

一种多服务器冗余系统中各服务器间的数据同步方法与流程

发布时间:2022-10-11 16:30:17 所属栏目:系统 来源:网络
导读:
本发明涉及轨道控制技术领域,具体涉及一种多服务器冗余系统中各服务器间的数据同步方法。
背景技术:
随着信息技术的发展和进步,越来越的计算机网络系统被应用在工业控制、医疗、交通、

一种多服务器冗余系统中各服务器间的数据同步方法与流程

本发明涉及轨道控制技术领域,具体涉及一种多服务器冗余系统中各服务器间的数据同步方法。

背景技术:

随着信息技术的发展和进步,越来越的计算机网络系统被应用在工业控制、医疗、交通、航空等传统行业领域。其中不乏对于系统安全性和稳定性要求极高的细分领域,如轨道交通行业等。由于计算机系统的硬件、软件都可能存在难以发现的故障隐患,因此在该类行业应用计算机系统时,应考虑如何最大程度降低未知异常带来的干扰,保证系统可用。

当今计算机网络系统,最常见的架构方式即为“客户端-服务端”架构,也称为“c-s”架构。其中,服务端聚合信息、数据,客户端则通过向服务端请求信息实现用户交互。在该类计算机网络系统中,服务端会将大部分需要记录的数据存入建立在磁盘上的数据库,并在内存上建立常用数据的缓存。

为了确保一个系统可以安全稳定地运行,并具有一定的容灾性,系统往往需要引入冗余设计。在“客户端-服务器”架构的系统中,保持多个服务端同时工作,在主要的服务端出现故障时及时进行切换的方案,是一种典型的冗余设计。系统引入了这种冗余设计后,可以提升异常情况时的可用能力。此类设计依靠读写共同的数据库进行重要数据的同步。

现有的多服务器冗余系统存在以下缺陷:

(1)过于依赖数据库。为了保证系统中多台服务器数据的一致性,单个服务器在进行数据修改时会同时修改数据库内容,并通知其他服务器从数据库获取数据更新。因此在服务器出现不能连接数据库的异常时,为了保证数据一致性,服务器将不能进行任何操作。

(2)难以保证数据时效性。受磁盘读写性能限制,修改数据库的数据操作相比于内存数据操作会占用更多时间。因此,读取需要频繁修改的数据会使得程序的处理速度减慢,从而难以保证数据的时效性。

(3)异常情况的处理复杂。对于系统维护和操作人员的经验要求较高。系统恢复流程复杂,不能及时地恢复系统的正常运行。

技术实现要素:

针对现有技术中的缺陷,本发明提供一种多服务器冗余系统中各服务器间的数据同步方法。

为实现上述目的,本发明提供以下技术方案:

本发明提供了一种多服务器冗余系统中各服务器间的数据同步方法,包括:

在多服务器冗余系统中的每一个服务器的内存中分别建立缓冲区,所述缓冲区用于存储同步数据,所述同步数据为在各服务器间需要保持一致性的数据;

当对在各服务器间需要保持一致性的数据进行修改时,只对多服务器冗余系统中的主服务器中的相应数据进行修改,并将修改后的数据放入主服务器的缓冲区中以及主服务器的数据库中;

主服务器与冗余系统中其他备用服务器建立通信连接,并从主服务器的缓冲区中将修改后的数据同步至其他备用服务器的缓冲区中,实现服务器间的数据同步。

进一步地,所述冗余系统中的服务器在接收到所述主服务器发送的同步数据时,先检验自己是否为主服务器,若是,则拒绝接收所述同步数据,并通知所述主服务器不要继续向自己发送所述同步数据;否则进行数据完整性校验,若校验未通过,则通知所述主服务器重新发送所述同步数据,若校验通过,则直接接收所述同步数据,并将接收到的同步数据更新至自身的缓冲区中。

进一步地,所述主服务器与冗余系统中其他备用服务器以点对点网络连接的方式建立通信连接,形成对等网络;所述主服务器将修改后的数据直接通过点对点网络发送给其他备用服务器。

进一步地,所述主服务器与冗余系统中其他备用服务器建立通信连接时,通过两路独立的冗余网络进行通信连接。

进一步地,所述主服务器与冗余系统中其他备用服务器建立通信连接时,若连接失败或连接失效,则自动在两路独立的冗余网络中进行切换,直至连接建立成功。

进一步地,所述主服务器从主服务器的缓冲区中将修改后的数据同步至其他备用服务器的缓冲区中时服务器系统备份,所述主服务器将修改后的数据从主服务器的缓冲区中读取出来,并使用protobuffer转换为字节流后发送给其他备用服务器,其他备用服务器在接收到所述字节流后按照protobuffer协议进行反序列化,将所述字节流转换为数据对象后存入各自的缓冲区中。

进一步地,所述主服务器和所述备用服务器均为ats应用服务器。

进一步地,所述同步数据的生命周期为一天或若干个小时。

进一步地,所述冗余系统共包括四个服务器。

由上述技术方案可知,本发明提供的多服务器冗余系统中各服务器间的数据同步方法,包括:在多服务器冗余系统中的每一个服务器的内存中分别建立缓冲区,所述缓冲区用于存储同步数据,所述同步数据为在各服务器间需要保持一致性的数据;当对在各服务器间需要保持一致性的数据进行修改时,只对多服务器冗余系统中的主服务器中的相应数据进行修改,并将修改后的数据放入主服务器的缓冲区中以及主服务器的数据库中;主服务器与冗余系统中其他备用服务器建立通信连接,并从主服务器的缓冲区中将修改后的数据同步至其他备用服务器的缓冲区中,实现服务器间的数据同步。可见,本发明实现了高效率和高可靠性的冗余服务器间的数据同步,在保证冗余服务器间数据一致性的前提下,降低了传统冗余服务器系统对于数据库的依赖。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的多服务器冗余系统中各服务器间的数据同步方法的流程图;

图2是本发明实施例提供的主服务器与备用服务器之间数据同步的时序图;

图3是本发明实施例提供的四机冗余设备间的通信关系拓扑图;

图4是本发明实施例提供的服务器间建立网络连接的状态转移图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

钛备份解锁器怎么用_服务器系统备份_icloud云服务备份照片

为了解决现有服务器对数据库过于依赖的问题,同时也为减轻高并发时服务器高频读写数据库可能造成的性能瓶颈,本发明开辟了一条新的思路,本发明在各服务器的内存中建立一块缓冲区,并将在各服务器间需要保持一致性要求的数据存放在缓冲区中,从而通过从缓冲区中读写数据的方式来完成各服务器间的数据同步。需要说明的是,本发明中所述的同步数据一般指生命周期较短(如一天),读写较为频繁,对时效性要求较高的数据,因此将其放到内存中进行读写,效率将会提高很多,从而可以很好地解决现有服务器在进行数据同步时对数据库过于依赖的问题。下面将通过具体实施例对本发明提供的主备控制中心数据库同步系统进行详细介绍。下面实施例中的主机和主服务器代指同一含义,备机和备用服务器代指同一含义。

本发明一实施例提供了一种多服务器冗余系统中各服务器间的数据同步方法,参见图1,该方法包括如下步骤:

步骤101:在多服务器冗余系统中的每一个服务器的内存中分别建立缓冲区,所述缓冲区用于存储同步数据,所述同步数据为在各服务器间需要保持一致性的数据。

步骤102:当对在各服务器间需要保持一致性的数据进行修改时,只对多服务器冗余系统中的主服务器中的相应数据进行修改,并将修改后的数据放入主服务器的缓冲区中以及主服务器的数据库中。

步骤103:主服务器与冗余系统中其他备用服务器建立通信连接,并从主服务器的缓冲区中将修改后的数据同步至其他备用服务器的缓冲区中,实现服务器间的数据同步。

可见,本实施例为解决服务器对数据库过于依赖的问题,并减轻高并发时服务器高频读写数据库可能造成的性能瓶颈,本实施例通过在服务器内存中建立缓冲区的方式存储和读写在各服务器间有保持一致性要求的数据。需要说明的是,本实施例中的主服务器和所述备用服务器可以指出ats应用服务器。本实施例中需要进行同步的数据(也即有保持一致性要求的数据)一般指生命周期较短(如一天内的地铁设备运营数据或若干小时内的地铁设备运营数据),读写较为频繁,对时效性要求较高的数据(如同步周期以毫秒计),因此将其放到内存中进行读写,效率将会提高很多,从而可以很好地解决现有服务器在进行数据同步时对数据库过于依赖的问题。在实际处理过程中,各服务器实时检测数据的变化,自动进行同步。需要说明的是,在修改有保持一致性要求的数据时,冗余服务器中只有主机进行修改。主机修改数据后会立即将数据同步给其他服务器,并上传主机的数据库进行储存。

图2是本发明实施例提供的主服务器与备用服务器之间数据同步的时序图。图2中a机为主机,b机为备机。由图2所示的时序图可知,本实施例在进行数据同步时,只有主服务器也即a机软件进行了数据库操作,其他备用服务器均未进行数据库操作,该设计省去了主机通知其他备机上的数据库软件的通信时间,以及其他备机数据库软件读取主机数据库数据的时间。

由上述技术方案可知,本实施例提供的多服务器冗余系统中各服务器间的数据同步方法,包括:在多服务器冗余系统中的每一个服务器的内存中分别建立缓冲区,所述缓冲区用于存储同步数据,所述同步数据为在各服务器间需要保持一致性的数据;当对在各服务器间需要保持一致性的数据进行修改时,只对多服务器冗余系统中的主服务器中的相应数据进行修改,并将修改后的数据放入主服务器的缓冲区中以及主服务器的数据库中;主服务器与冗余系统中其他备用服务器建立通信连接,并从主服务器的缓冲区中将修改后的数据同步至其他备用服务器的缓冲区中,实现服务器间的数据同步。可见,本实施例在各服务器的内存中建立一块缓冲区,并将在各服务器间需要保持一致性要求的数据存放在缓冲区中,通过从缓冲区中读写数据的方式来完成各服务器间的数据同步。本实施例实现了高效率和高可靠性的冗余服务器间的数据同步,在保证冗余服务器间数据一致性的前提下,降低了传统冗余服务器系统对于数据库的依赖。

在一种优选实施方式中,各服务器在进行数据同步时,还会进行数据完整性和来源可靠性的验证,具体地,所述冗余系统中的服务器在接收到所述主服务器发送的同步数据时,先检验自己是否为主服务器,若是,则拒绝接收所述同步数据,并通知所述主服务器不要继续向自己发送所述同步数据;否则进行数据完整性校验,若校验未通过,则通知所述主服务器重新发送所述同步数据,若校验通过,则直接接收所述同步数据,并将接收到的同步数据更新至自身的缓冲区中。

可见,在本实施方式中,在数据同步时进行了数据来源可靠性和数据完整性的校验,参见图2,备机在收到主机发来的数据后应首先通过信息校验自身的主备状况。如果自身为主机,则拒绝接收同步信息,并通知消息来源不要继续发送同步数据;如果自身为备机,则进行数据完整性校验,未通过校验则通知消息来源重新发送同步数据,通过校验则接收数据,并更新至内存中。需要说明的是,备机在收到主机发来的数据后应首先通过信息校验自身的主备状况,如果自身为主机,则拒绝接收同步信息,并通知消息来源不要继续发送同步数据。虽然双主机的情况比较极端,一般不会出现,但是为提升软件的稳定性,防止异常情况(如不可预测的软件缺陷、网络攻击等)发生时造成的意外影响,最好还是进行该判断过程比较安全。

为提高数据传输速度,在一种优选实施方式中,所述主服务器从主服务器的缓冲区中将修改后的数据同步至其他备用服务器的缓冲区中时,所述主服务器将修改后的数据从主服务器的缓冲区中读取出来,并使用protobuffer转换为字节流后发送给其他备用服务器,其他备用服务器在接收到所述字节流后按照protobuffer协议进行反序列化,将所述字节流转换为数据对象后存入各自的缓冲区中。

可见,在本实施方式中,为提高数据传输速度,提出了一种将对象数据序列化的方法,实际实现中,数据序列化采用google开源项目protobuffer进行实现。在传输数据时,主机首先将对象从内存中读取出来,使用protobuffer转换为字节流后发送出去。备机在接收到所述字节流后按照protobuffer协议进行反序列化,即将所述字节流转换为数据对象后存入内存。使用protobuffer的主要原因是其优秀的性能。对比其他序列化格式(json、xml等),其承载的信息密度大,序列化和反序列化速度高(是其他方式的5~10倍速度),且内存占用小。

为减少不必要的中间传输环节造成的延时,提升数据同步速度,在一种优选实施方式中,所述主服务器与冗余系统中其他备用服务器以点对点网络连接的方式建立通信连接,形成对等网络;所述主服务器将修改后的数据直接通过点对点网络发送给其他备用服务器。

如图3所示,可见,在本实施方式中,服务器间以“p2p”(点对点)网络连接,形成对等网络,不严格依赖于某一特定服务器。在进行数据传输时,主机直接将数据通过p2p网络发送给其他服务器,减少不必要的中间传输环节造成的延时,提升数据同步速度。即使单个服务器故障异常,也不会对其他设备造成影响。

为提升系统的稳定性,降低网络故障对于同步功能的影响,在一种优选实施方式中,所述主服务器与冗余系统中其他备用服务器建立通信连接时,通过两路独立的冗余网络进行通信连接。例如,所述主服务器与冗余系统中其他备用服务器建立通信连接时,若连接失败或连接失效,则自动在两路独立的冗余网络中进行切换,直至连接建立成功。

参见图4所示的服务器间建立网络连接的状态转移图。在本实施方式中,主机在与其他备机建立连接失败或连接失效时,主机会尝试不断在冗余网络中进行切换,直至连接建立成功。两路独立的冗余网络可以提升系统的稳定性,降低网络故障对于同步功能的影响。

由上面描述可知,本实施例主机的同步模块直接读取程序内存中的数据,监测变化,并将数据组包发送至其他备用服务器,其他备用服务器则在校验通过后直接接收并更新入内存中,可见,本实施例实现了高效率、高可靠性的冗余服务器间数据同步,在保证冗余服务器间数据一致性的前提下,降低了数据库压力,减少了不必要的数据库读写操作,降低了传统冗余服务器系统对于数据库的依赖,特别是“客户端-服务端”架构计算机系统中冗余服务器对于数据库的依赖,在数据库异常时,冗余服务器间可以依靠数据同步保持数据的一致性,最高限度地保持了各服务器间数据的一致性。此外,本实施例提供的方法还具有一定的容灾性,为异常状况处理争取时间。在数据库(由于不完全依赖数据库)或部分服务器(由于主服务器和其他备用服务器之间是点对点通信,因此部分服务器异常时还可以继续支持一段时间)发生异常时,可以在一定时间内支持系统继续正常运行,为系统维护人员争取更多的维修时间。此外,在网络发生异常时,可以通过冗余网络实现同步功能,在不影响业务运行的前提下为运维人员检修提供充足的时间,保证了系统的可用性。

以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!