CN109165261A - 数据同步方法、装置、服务器及计算机存储介质 - Google Patents
数据同步方法、装置、服务器及计算机存储介质 Download PDFInfo
- Publication number
- CN109165261A CN109165261A CN201811180360.9A CN201811180360A CN109165261A CN 109165261 A CN109165261 A CN 109165261A CN 201811180360 A CN201811180360 A CN 201811180360A CN 109165261 A CN109165261 A CN 109165261A
- Authority
- CN
- China
- Prior art keywords
- node
- message
- data
- synchronization
- demons
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本公开提供一种数据同步方法、装置、服务器及计算机可读存储介质,通过接收至少一同步消息,所述同步消息包含节点标识;将所述至少一同步消息分发至各个节点对应的消息队列;通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据,解决现有的数据同步方案中对中心节点的依赖性高、***性能开销大、数据同步效率低的技术问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据同步方法、装置、服务器及计算机存储介质。
背景技术
随着计算机技术的高速发展,越来越多的计算机***需要通过数据同步保持各个节点间的信息一致性。当前较为流行的数据同步方案有:
1、Master-Slave模式数据同步。该数据同步方案以binlog方式支持多个Slave从库同步主库的数据,但是在使用从库的时候,从库只能读模式而不能写操作。在分布式***中,从效率和性能考虑,每个节点应该可以对当前连接的数据库可以读写操作。然而这种主从模式,如果节点连接的是从库,则不能满足进行可读写的业务需求,如果节点都连接主库,则违背了分布式初衷。
2、分布式***异步方式数据同步方法。该数据同步方案中,消息中心以同步表为存储中介,并非正真基于消息服务器的队列模式;消息处理非全异步模式,消息中心只是告诉客户端有变化数据的版本号,客户端需要根据版本号从消息中心拉取数据并处理,最后还要上报更新版本号;消息中心职责重,消息中心不仅要告诉客户端有新数据,还得提供接口服务,以及保证数据版本号一致性。
上述两种当前流行的数据同步方案,都各自存在着缺陷:
Master-Slave模式数据同步方案中,每个slave节点不能实现自由的可读写的需求,同时对master的性能要求较高,无法做到效率和性能的兼顾。
(2)分布式***异步方式数据同步方案中,通过更新版本号保证节点间的同步,在数据通信方面需要耗费较高的***开销,此外对于消息中心的性能要求很高,消息中心不仅需要维护版本号,还需要为各个几点提供接口服务,如果消息中心瘫宕机,则整个分布式***会立刻瘫痪。
发明内容
本发明公开的主要目的在于提出一种数据同步方法、装置、服务器及计算机存储介质,旨在解决现有的数据同步方案中对中心节点的依赖性高、***性能开销大、数据同步效率低的技术问题。
为实现上述目的,本发明公开提供一种数据同步方法,方法包括:接收至少一同步消息,所述同步消息包含节点标识;将所述至少一同步消息分发至各个节点对应的消息队列;通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据。
可选地,所述以使所述各个节点的守护程序根据所述同步消息更新对应节点的数据,包括:以使所述守护程序判断所述同步消息包含的节点标识与对应节点的节点标识是否相同;如果所述同步消息包含的节点标识与对应节点的节点标识不相同,则根据所述同步消息更新对应节点的数据。
可选地,所述方法还包括:如果所述同步消息包含的节点标识与对应节点的节点标识相同,则丢弃所述同步消息,并读取下一条同步消息。
可选地,所述同步消息是由各个节点的守护程序监测到各个节点数据发生变化时产生。
可选地,所述各个节点的守护程序监测到各个节点数据发生变化,包括:当节点的数据发生变化时,发生变化的数据被存储到临时表;守护程序按照第一预定时长检测临时表,获取发生变化的数据。
可选地,所述通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,还包括:通过所述消息队列按照先进先出的顺序将所述同步消息推送至对应节点的守护程序;接收到所述守护程序反馈的确认响应后,推送所述消息队列中的下一条同步消息。
可选地,所述方法还包括:在第二预设时长内未接收到所述守护程序反馈的确认响应时,通过所述消息队列再次发送所述同步消息。
本发明公开提供一种数据同步装置,该装置包括:接收模块,用于接收至少一同步消息,所述同步消息包含节点标识;分发模块,用于将所述至少一同步消息分发至各个节点对应的消息队列;推送模块,用户通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据。
本发明还公开提供一种服务器,所述服务器包括:处理器;存储器,与所述处理器连接,所述存储器包含控制指令,当所述处理器读取所述控制指令时,控制所述电子设备实现上述任一项的所述数据同步方法。
本发明还公开还提供一种计算机存储介质,所述计算机存储介质有一个或多个程序,所述一个或多个程序被一个或多个处理器执行,以实现上述任一项的所述数据同步方法。
本公开一种示例实施例提供的数据同步方法、装置、服务器及计算机可读存储介质中,通过接收至少一同步消息,所述同步消息包含节点标识;将所述至少一同步消息分发至各个节点对应的消息队列;通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据,解决现有的数据同步方案中对中心节点的依赖性高、***性能开销大、数据同步效率低的技术问题,实现了保证各节点的自由读写操作,同时有效降低了对中心节点较高的依赖性,降低了***性能开销,并有效减少数据同步的失败率,大大提高了数据同步效率的技术效果。
附图说明
图1为本公开其中之一实施方式示意的一种数据同步方法的流程图;
图2为本公开其中之一实施方式示意的一种数据同步方法的流程图;
图3为本公开其中之一实施方式示意的一种数据同步装置的框图;
图4为本公开其中之一实施方式示意的一种服务器的结构图;
图5为本公开其中之一实施方式示意的一种用于数据同步的计算机存储介质。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
本示例性实施例其中之一首先公开了一种数据同步方法。所述数据同步方法的执行主体可以是服务端一个或多个电子设备,如:服务器、集群等设备;所述信息处理方法的执行主体也可以是第三方设备,该第三方设备通过无线或有线的方式与服务端、客户端、检测端进行数据通信,从而实现本公开所述的数据同步方法。本公开对此不作限制。但为了更好的解释本公开所述的数据同步方法,本实施方式以消息服务器为执行主体进行实施方式的说明,图1为本公开其中之一实施方式示意的一种数据同步方法的流程图,如图1所示,该数据同步方法可以包括以下步骤:
步骤S110,接收至少一同步消息,所述同步消息包含节点标识;
步骤S120,将所述至少一同步消息分发至各个节点对应的消息队列;
步骤S130,通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据。
通过上述实施方式,本发明公开解决现有的数据同步方案中对中心节点的依赖性高、***性能开销大、数据同步效率低的技术问题,实现了保证各节点的自由读写操作,同时有效降低了对中心节点较高的依赖性,降低了***性能开销,并有效减少数据同步的失败率,大大提高了数据同步效率的技术效果。
下面,将参考图1所示对本示例实施例中的数据同步方法作进一步说明。
在步骤S110中,接收至少一同步消息,所述同步消息包含节点标识。
在本示例性的实施方式中,消息服务器接收到各个节点或第三方***发送的至少一同步消息,该同步消息包含发生改变的数据,用于各节点的数据更新,此外,所述同步消息还包含节点标识,用于标识该发生改变的数据来源,该标识可以是数据同步***中任意节点的节点标识,也可以是第三方***节点标识。例如:0001为节点1的节点标识;xxxx为第三方节***的节点标识。
需要说明的是,各个节点是指数据同步***中的各个提供数据存储、读写服务的节点,如服务端、服务集群等,第三方***是指数据同步***之外的***,用于提供更新数据,以使数据同步***中的各节点进行数据同步,所述第三方***可以是具备数据输出功能的任意***。
在步骤S120中,将所述至少一同步消息分发至各个节点对应的消息队列。
在本示例性的实施方式中,消息服务器本地或者是与其可以进行通信的第三方维护有至少一消息队列,该消息队列与各个节点一一对应,也即是说,每个节点都分配有彼此独立的消息队列。消息服务器将接收到的同步消息按照预设规则分发至各个节点对应的消息队列。
在一种可选的实施方式中,消息服务器按照预设的路由规则将同步消息路由至各个节点对应的消息队列中。其中,路由规则可以是现有技术中的任意路由协议,本公开不再赘述。
在步骤S130中,通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据。
在本示例性的实施方式中,每个节点都存在一与之对应的守护程序,也就是说,节点、守护程序、消息队列三者一一对应且相互独立,该守护程序一方面可以监听对应节点的数据变化,另一方面可以解析消息队列推送的同步消息,根据该同步消息更新对应节点的数据。
通过消息队列按照预设顺序将同步消息推送至对应节点的守护程序,其中,预设顺序可以是先进先出的顺序,也可以是先进后出的顺序,还可以是满足时间窗规则的顺序以及任意顺序,该顺序可以根据实际情况的需求任意设置,本公开不作特殊限制。
通过本实施方式,分布式多节点部署,每个节点的守护程序监听自己的消息队列,独立运行并可以对节点位置的数据库可进行读写操作。由于每个节点都有自己监听的队列,所以是并行处理,节点之间互不影响。
在一种可选的实施方式中,在步骤S130中,通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,还包括:
步骤S1301,通过所述消息队列按照先进先出的顺序将所述同步消息推送至对应节点的守护程序;
步骤S1302,接收到所述守护程序反馈的确认响应后,推送所述消息队列中的下一条同步消息。
其中,通过所述消息队列按照先进先出的顺序将所述同步消息推送至对应节点的守护程序,从而保证了守护程序对同步消息进行处理的有序性。
消息服务器通过TCP通信协议或其他可确保消息可靠性的通信协议连接到各个节点对应的守护程序,从而保证了同步消息的可靠性。当消息服务器接收到守护程序反馈的确认响应后,也就是说,守护程序已经接收到了该同步消息或者已经成功处理完毕该同步消息,此时,消息服务器会向该守护程序推送消息队列中的下一条同步消息。
需要说明的是,各个消息队列与守护程序是彼此独立的,并行工作互不影响。由于各个守护程序的处理进度不同,因此各个消息队列在推送的同步消息时可以是同步的,也可以是不同步的。
例如:消息队列1和消息队列2中同时存储了3个同步消息,分别是同步消息0010、同步消息0011、同步消息0012。此时,消息队列1和消息队列2分别向各自对应的节点1和节点2的守护程序推送了同步消息0010后,收到了节点1的守护程序的确认响应,但是并没有收到节点2的守护程序的确认响应,此时,消息服务器控制消息队列1向节点1的守护程序继续发送下一条同步消息0011,而继续等待节点2的守护程序的确认响应。
通过上述实施方式,一方面,通过异步通信解决了同步通信造消息阻塞,性能下降的技术问题;另一方面,通过确认响应保证了数据同步的可靠性。
在一种可选的实施方式中,在步骤S130中,通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,还包括:
步骤S1303,在第二预设时长内未接收到所述守护程序反馈的确认响应时,通过所述消息队列再次发送所述同步消息。
其中,在第二预设时长内未接收到所述守护程序反馈的确认响应时,此时说明该守护程序并未收到该同步消息,或者该守护程序并未成功处理该同步消息,那么消息服务器通过消息队列再次发送该同步消息。第二预设时长可以根据实际需要进行设置。
通过上述实施方式,通过超时重传技术,确保了每一个同步消息都能够被成功处理,从而进一步保证了数据同步的可靠性。
在一种可选的实施方式中,在步骤S130中,以使所述各个节点的守护程序根据所述同步消息更新对应节点的数据,还包括:
步骤S1304,以使所述守护程序判断所述同步消息包含的节点标识与对应节点的节点标识是否相同;
步骤S1305,如果所述同步消息包含的节点标识与对应节点的节点标识不相同,则根据所述同步消息更新对应节点的数据。
其中,守护程序接收到消息队列推送的同步消息后,对所述同步消息进行解析,获取同步消息中的节点标识,守护程序判断同步消息中的节点标识和与之对应的节点的节点标识是否相同,如果不相同,则表明该同步消息中包含的发生变化的数据来源并不是本节点,从而根据该同步消息更新本节点的数据,使得本节点能够快速与其他节点进行数据同步。
通过上述实施方式,一方面,通过异步通信解决了同步通信造消息阻塞,性能下降的技术问题;另一方面,通过节点标识快速识别出其他节点的变化数据,从而降低了对中心节点的依赖度,并能够提升数据同步的效率;还一方面,由于每个节点都存在守护进程,一个节点失败不影响其他节点正常处理,从而减少同步失败率,降低了***的复杂性。
在一种可选的实施方式中,在步骤S130中,以使所述各个节点的守护程序根据所述同步消息更新对应节点的数据,还包括:
步骤S1306,如果所述同步消息包含的节点标识与对应节点的节点标识相同,则丢弃所述同步消息,并读取下一条同步消息。
其中,守护程序接收到消息队列推送的同步消息后,对所述同步消息进行解析,获取同步消息中的节点标识,守护程序判断同步消息中的节点标识和与之对应的节点的节点标识是否相同,如果相同,则表明该同步消息中包含的发生变化的数据来源于本节点,从而不再根据该同步消息重复更新本节点的数据,并进行下一条同步消息的读取。
通过上述实施方式,快速识别出变化数据的来源,丢弃本节点的数据变化对应的同步消息,有效提升数据同步效率。
在一种可选的实施方式中,同步消息是由各个节点的守护程序监测到各个节点数据发生变化时产生。
其中,每个节点都分配有一个对应的守护程序,该守护程序可以监测到与之对应的节点的数据是否发生变化,如果数据发生变化,守护程序将获取变化数据,并获取节点的节点标识从而生成同步消息。
在一种可选的实施方式中,各个节点的守护程序监测到各个节点数据发生变化,包括以下步骤:
步骤S210,当节点的数据发生变化时,发生变化的数据被存储到临时表;
步骤S220,守护程序按照第一预定时长检测临时表,获取发生变化的数据。
其中,节点的数据发生变化时,该节点对发生变化的数据进行记录,将发生变化的数据存储至临时表,并标识该数据的来源节点,临时表中包含多条记录,每一条记录表示为一次发生变化的数据;守护程序按照第一预定时长检测临时表,按照顺序从临时表获取发生变化的数据,生成同步消息发送至消息服务器,守护程序将该同步消息发送成功后将该条记录标志为已处理,并继续处理下一条记录。
通过上述实施方式,设置守护程序监听节点的数据修改,并通过临时表保存发生变化的数据,从而确保守护程序能够快速获得节点的数据变化,实现各个节点的读写操作,有效提升数据同步效率。
在一种可选的实施方式中,图2为本公开其中之一实施方式示意的一种数据同步方法的流程图。如图2所示,本公开的数据同步方法包含以下步骤:
步骤1,节点1的守护程序监测到节点1的数据库发生了数据变化,节点1通过临时表获取发生变化的数据,以及节点1的节点标识Idc=1生成同步消息,该同步消息包含节点标识Idc=1;
步骤2,节点1的守护程序通过TCP连接将该同步消息Idc=1发送至消息服务器,并接收该消息服务器反馈的确认响应,以表示消息服务器已经成功接收到该同步消息Idc=1。
步骤3,消息服务器按照预设的路由规则将该同步消息Idc=1分发至各个节点对应的消息队列之中,例如:本***包含3个节点,消息服务器按照预设的路由规则将该同步消息Idc=1分发至3个节点对应的消息队列之中。
当节点2又发生数据变化时,重复上述步骤,消息服务器按照按照预设的路由规则将该同步消息Idc=2分发至各个节点对应的消息队列之中,此时消息队列如图2所示,包括同步消息Idc=1和同步消息Idc=2,并以先进先出的顺序存储在各个消息队列之中。
步骤4,各个消息队列按照预设顺序将同步消息Idc=1推送至各个节点的守护程序,守护程序判断该同步消息的节点标识和与之对应节点的节点标识是否相同。如果不相同,则执行步骤350,如果相同,则执行步骤360。
步骤5,守护程序获取该同步消息的变化数据,更新并保存到与之对应的节点的数据库中。例如图2中,节点3的守护程序判断同步消息Idc=1的节点标识为Idc=1,和与之对应的节点3的节点标识Idc=3不同,获取该同步消息Idc=1的变化数据,更新并保存到节点3的数据库中。
步骤6,守护程序丢弃该同步消息,并读取下一条同步消息。例如:节点1的守护程序判断同步消息Idc=1的节点标识为Idc=1,和与之对应的节点1的节点标识Idc=1相同,丢弃该同步消息Idc=1,并读取消息队列中的下一条同步消息Idc=2。
通过上述实施方式,本公开解决现有的数据同步方案中对中心节点的依赖性高、***性能开销大、数据同步效率低的技术问题,实现了保证各节点的自由读写操作,同时有效降低了对中心节点较高的依赖性,降低了***性能开销,并有效减少数据同步的失败率,大大提高了数据同步效率的技术效果。
在本公开的示例性实施例中,还提供了一种数据同步装置,图3为本公开其中之一实施方式示意的一种数据同步装置的框图,参照图3所示,该数据同步装置包括:
接收模块410,用于接收至少一同步消息,所述同步消息包含节点标识;
分发模块420,用于将所述至少一同步消息分发至各个节点对应的消息队列;
推送模块430,用户通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据。
通过上述实施方式,本公开解决现有的数据同步方案中对中心节点的依赖性高、***性能开销大、数据同步效率低的技术问题,实现了保证各节点的自由读写操作,同时有效降低了对中心节点较高的依赖性,降低了***性能开销,并有效减少数据同步的失败率,大大提高了数据同步效率的技术效果。
下面,将参考图3所示对本示例实施例中的接口控制装置作进一步说明。
接收模块410,用于接收至少一同步消息,所述同步消息包含节点标识。
在本示例性的实施方式中,消息服务器接收到各个节点或第三方***发送的至少一同步消息,该同步消息包含发生改变的数据,用于各节点的数据更新,此外,所述同步消息还包含节点标识,用于标识该发生改变的数据来源,该标识可以是数据同步***中任意节点的节点标识,也可以是第三方***节点标识。例如:0001为节点1的节点标识;xxxx为第三方节***的节点标识。
需要说明的是,各个节点是指数据同步***中的各个提供数据存储、读写服务的节点,如服务端、服务集群等,第三方***是指数据同步***之外的***,用于提供更新数据,以使数据同步***中的各节点进行数据同步,所述第三方***可以是具备数据输出功能的任意***。
分发模块420,用于将所述至少一同步消息分发至各个节点对应的消息队列。
在本示例性的实施方式中,消息服务器本地或者是与其可以进行通信的第三方维护有至少一消息队列,该消息队列与各个节点一一对应,也即是说,每个节点都分配有彼此独立的消息队列。消息服务器将接收到的同步消息按照预设规则分发至各个节点对应的消息队列。
在一种可选的实施方式中,消息服务器按照预设的路由规则将同步消息路由至各个节点对应的消息队列中。其中,路由规则可以是现有技术中的任意路由协议,本公开不再赘述。
推送模块430,用于通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据。
在本示例性的实施方式中,每个节点都存在一与之对应的守护程序,也就是说,节点、守护程序、消息队列三者一一对应且相互独立,该守护程序一方面可以监听对应节点的数据变化,另一方面可以解析消息队列推送的同步消息,根据该同步消息更新对应节点的数据。
通过消息队列按照预设顺序将同步消息推送至对应节点的守护程序,其中,预设顺序可以是先进先出的顺序,也可以是先进后出的顺序,还可以是满足时间窗规则的顺序以及任意顺序,该顺序可以根据实际情况的需求任意设置,本公开不作特殊限制。
通过本实施方式,分布式多节点部署,每个节点的守护程序监听自己的消息队列,独立运行并可以对节点位置的数据库可进行读写操作。由于每个节点都有自己监听的队列,所以是并行处理,节点之间互不影响。
在一种可选的实施方式中,推送模块430,还包括:
第一推送单元(图中未示出),用于通过所述消息队列按照先进先出的顺序将所述同步消息推送至对应节点的守护程序;
第一接收单元(图中未示出),用于接收到所述守护程序反馈的确认响应后,推送所述消息队列中的下一条同步消息。
其中,通过所述消息队列按照先进先出的顺序将所述同步消息推送至对应节点的守护程序,从而保证了守护程序对同步消息进行处理的有序性。
消息服务器通过TCP通信协议或其他可确保消息可靠性的通信协议连接到各个节点对应的守护程序,从而保证了同步消息的可靠性。当消息服务器接收到守护程序反馈的确认响应后,也就是说,守护程序已经接收到了该同步消息或者已经成功处理完毕该同步消息,此时,消息服务器会向该守护程序推送消息队列中的下一条同步消息。
需要说明的是,各个消息队列与守护程序是彼此独立的,并行工作互不影响。由于各个守护程序的处理进度不同,因此各个消息队列在推送的同步消息时可以是同步的,也可以是不同步的。
例如:消息队列1和消息队列2中同时存储了3个同步消息,分别是同步消息0010、同步消息0011、同步消息0012。此时,消息队列1和消息队列2分别向各自对应的节点1和节点2的守护程序推送了同步消息0010后,收到了节点1的守护程序的确认响应,但是并没有收到节点2的守护程序的确认响应,此时,消息服务器控制消息队列1向节点1的守护程序继续发送下一条同步消息0011,而继续等待节点2的守护程序的确认响应。
通过上述实施方式,一方面,通过异步通信解决了同步通信造消息阻塞,性能下降的技术问题;另一方面,通过确认响应保证了数据同步的可靠性。
在一种可选的实施方式中,推送模块430,还包括:
第二推送单元(图中未示出),用于在第二预设时长内未接收到所述守护程序反馈的确认响应时,通过所述消息队列再次发送所述同步消息。
其中,在第二预设时长内未接收到所述守护程序反馈的确认响应时,此时说明该守护程序并未收到该同步消息,或者该守护程序并未成功处理该同步消息,那么消息服务器通过消息队列再次发送该同步消息。第二预设时长可以根据实际需要进行设置。
通过上述实施方式,通过超时重传技术,确保了每一个同步消息都能够被成功处理,从而进一步保证了数据同步的可靠性。
在一种可选的实施方式中,推送模块430,还用于以使所述守护程序判断所述同步消息包含的节点标识与对应节点的节点标识是否相同;如果所述同步消息包含的节点标识与对应节点的节点标识不相同,则根据所述同步消息更新对应节点的数据。
其中,守护程序接收到消息队列推送的同步消息后,对所述同步消息进行解析,获取同步消息中的节点标识,守护程序判断同步消息中的节点标识和与之对应的节点的节点标识是否相同,如果不相同,则表明该同步消息中包含的发生变化的数据来源并不是本节点,从而根据该同步消息更新本节点的数据,使得本节点能够快速与其他节点进行数据同步。
通过上述实施方式,一方面,通过异步通信解决了同步通信造消息阻塞,性能下降的技术问题;另一方面,通过节点标识快速识别出其他节点的变化数据,从而降低了对中心节点的依赖度,并能够提升数据同步的效率;还一方面,由于每个节点都存在守护进程,一个节点失败不影响其他节点正常处理,从而减少同步失败率,降低了***的复杂性。
在一种可选的实施方式中,推送模块430,用于以使所述各个节点的守护程序根据所述同步消息更新对应节点的数据,还包括:
如果所述同步消息包含的节点标识与对应节点的节点标识相同,则丢弃所述同步消息,并读取下一条同步消息。
其中,守护程序接收到消息队列推送的同步消息后,对所述同步消息进行解析,获取同步消息中的节点标识,守护程序判断同步消息中的节点标识和与之对应的节点的节点标识是否相同,如果相同,则表明该同步消息中包含的发生变化的数据来源于本节点,从而不再根据该同步消息重复更新本节点的数据,并进行下一条同步消息的读取。
通过上述实施方式,快速识别出变化数据的来源,丢弃本节点的数据变化对应的同步消息,有效提升数据同步效率。
在一种可选的实施方式中,同步消息是由各个节点的守护程序监测到各个节点数据发生变化时产生。
其中,每个节点都分配有一个对应的守护程序,该守护程序可以监测到与之对应的节点的数据是否发生变化,如果数据发生变化,守护程序将获取变化数据,并获取节点的节点标识从而生成同步消息。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的服务器。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
图4为本公开其中之一实施方式示意的一种服务器的结构图。下面参照图4来描述根据本发明的这种实施方式的服务器600。图4显示的服务器600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,服务器600以通用计算设备的形式表现。服务器600的组件可以包括但不限于:上述至少一个处理单元610、上述至少一个存储单元620、连接不同***组件(包括存储单元620和处理单元610)的总线630、显示单元640。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本公开上述的数据同步方法。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
服务器600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该服务器600交互的设备通信,和/或与使得该服务器600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,服务器600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器660通过总线630与服务器600的其它模块通信。应当明白,尽管图中未示出,可以结合服务器600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过上述实施方式,本公开解决现有的数据同步方案中对中心节点的依赖性高、***性能开销大、数据同步效率低的技术问题,实现了保证各节点的自由读写操作,同时有效降低了对中心节点较高的依赖性,降低了***性能开销,并有效减少数据同步的失败率,大大提高了数据同步效率的技术效果。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行本公开上述的数据同步方法。
参考图5所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
通过上述实施方式,本公开解决现有的数据同步方案中对中心节点的依赖性高、***性能开销大、数据同步效率低的技术问题,实现了保证各节点的自由读写操作,同时有效降低了对中心节点较高的依赖性,降低了***性能开销,并有效减少数据同步的失败率,大大提高了数据同步效率的技术效果。
上述各实施方式中的对应的技术特征在不导致方案矛盾或不可实施的前提下,可以相互使用。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
Claims (10)
1.一种数据同步方法,其特征在于,所述方法包括:
接收至少一同步消息,所述同步消息包含节点标识;
将所述至少一同步消息分发至各个节点对应的消息队列;
通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据。
2.如权利要求1所述的方法,其特征在于,所述以使所述各个节点的守护程序根据所述同步消息更新对应节点的数据,包括:
以使所述守护程序判断所述同步消息包含的节点标识与对应节点的节点标识是否相同;
如果所述同步消息包含的节点标识与对应节点的节点标识不相同,则根据所述同步消息更新对应节点的数据。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
如果所述同步消息包含的节点标识与对应节点的节点标识相同,则丢弃所述同步消息,并读取下一条同步消息。
4.如权利要求1所述的方法,其特征在于,所述同步消息是由各个节点的守护程序监测到各个节点数据发生变化时产生。
5.如权利要求4所述的方法,其特征在于,所述各个节点的守护程序监测到各个节点数据发生变化,包括:
当节点的数据发生变化时,发生变化的数据被存储到临时表;
守护程序按照第一预定时长检测临时表,获取发生变化的数据。
6.如权利要求1所述的方法,其特征在于,所述通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,还包括:
通过所述消息队列按照先进先出的顺序将所述同步消息推送至对应节点的守护程序;
接收到所述守护程序反馈的确认响应后,推送所述消息队列中的下一条同步消息。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
在第二预设时长内未接收到所述守护程序反馈的确认响应时,通过所述消息队列再次发送所述同步消息。
8.一种数据同步装置,其特征在于,所述装置包括:
接收模块,用于接收至少一同步消息,所述同步消息包含节点标识;
分发模块,用于将所述至少一同步消息分发至各个节点对应的消息队列;
推送模块,用户通过所述消息队列按照预设顺序将所述同步消息推送至对应节点的守护程序,以使所述对应节点的守护程序根据所述同步消息更新对应节点的数据。
9.一种服务器,其特征在于,所述服务器包括:
处理器;
存储器,与所述处理器连接,所述存储器包含控制指令,当所述处理器读取所述控制指令时,控制所述服务器实现权利要求1-7任一项的所述数据同步方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质有一个或多个程序,所述一个或多个程序被一个或多个处理器执行,以实现权利要求1-7任一项的所述数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811180360.9A CN109165261A (zh) | 2018-10-10 | 2018-10-10 | 数据同步方法、装置、服务器及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811180360.9A CN109165261A (zh) | 2018-10-10 | 2018-10-10 | 数据同步方法、装置、服务器及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109165261A true CN109165261A (zh) | 2019-01-08 |
Family
ID=64877682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811180360.9A Pending CN109165261A (zh) | 2018-10-10 | 2018-10-10 | 数据同步方法、装置、服务器及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109165261A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111343277A (zh) * | 2020-03-04 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 分布式数据存储方法、***、计算机设备和存储介质 |
CN112202640A (zh) * | 2020-09-30 | 2021-01-08 | 中国工商银行股份有限公司 | 应用于容器云平台的监控方法和装置 |
CN112269337A (zh) * | 2020-10-21 | 2021-01-26 | 深圳昆仑通态科技有限责任公司 | 一种用于运行scada***的方法、***及存储介质 |
CN116414579A (zh) * | 2023-02-21 | 2023-07-11 | 北京友友天宇***技术有限公司 | 基于分布式群组通信实现的多副本间数据一致性的方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101902473A (zh) * | 2010-07-22 | 2010-12-01 | 武汉中地数码科技有限公司 | 基于网格gis的数据同步更新实现方法 |
CN103942110A (zh) * | 2013-01-17 | 2014-07-23 | 腾讯科技(深圳)有限公司 | 一种数据共享及同步的方法和*** |
CN105162879A (zh) * | 2015-09-24 | 2015-12-16 | 北京奇虎科技有限公司 | 实现多机房数据一致性的方法、装置及*** |
CN106528574A (zh) * | 2015-09-14 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及设备 |
CN106657314A (zh) * | 2016-12-14 | 2017-05-10 | 北京奇艺世纪科技有限公司 | 跨数据中心数据同步***及方法 |
CN107180116A (zh) * | 2017-06-28 | 2017-09-19 | 努比亚技术有限公司 | 一种数据同步处理方法、移动终端以及计算机可读存储介质 |
CN107590277A (zh) * | 2017-09-28 | 2018-01-16 | 泰康保险集团股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
WO2018046910A1 (en) * | 2016-09-06 | 2018-03-15 | Cambridge Communication Systems Limited | A node for a communications system |
US20180075120A1 (en) * | 2013-02-15 | 2018-03-15 | Intuitive Surgical Operations, Inc. | Systems and methods for synchronizing nodes of a robotic system |
US20180139742A1 (en) * | 2016-11-11 | 2018-05-17 | Qualcomm Incorporated | Data and control channels in synchronization bursts for millimeter wave new radio |
CN108322533A (zh) * | 2018-01-31 | 2018-07-24 | 广州鼎甲计算机科技有限公司 | 基于操作日志的分布式集群节点间配置同步方法 |
-
2018
- 2018-10-10 CN CN201811180360.9A patent/CN109165261A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101902473A (zh) * | 2010-07-22 | 2010-12-01 | 武汉中地数码科技有限公司 | 基于网格gis的数据同步更新实现方法 |
CN103942110A (zh) * | 2013-01-17 | 2014-07-23 | 腾讯科技(深圳)有限公司 | 一种数据共享及同步的方法和*** |
US20180075120A1 (en) * | 2013-02-15 | 2018-03-15 | Intuitive Surgical Operations, Inc. | Systems and methods for synchronizing nodes of a robotic system |
CN106528574A (zh) * | 2015-09-14 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及设备 |
CN105162879A (zh) * | 2015-09-24 | 2015-12-16 | 北京奇虎科技有限公司 | 实现多机房数据一致性的方法、装置及*** |
WO2018046910A1 (en) * | 2016-09-06 | 2018-03-15 | Cambridge Communication Systems Limited | A node for a communications system |
US20180139742A1 (en) * | 2016-11-11 | 2018-05-17 | Qualcomm Incorporated | Data and control channels in synchronization bursts for millimeter wave new radio |
CN106657314A (zh) * | 2016-12-14 | 2017-05-10 | 北京奇艺世纪科技有限公司 | 跨数据中心数据同步***及方法 |
CN107180116A (zh) * | 2017-06-28 | 2017-09-19 | 努比亚技术有限公司 | 一种数据同步处理方法、移动终端以及计算机可读存储介质 |
CN107590277A (zh) * | 2017-09-28 | 2018-01-16 | 泰康保险集团股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN108322533A (zh) * | 2018-01-31 | 2018-07-24 | 广州鼎甲计算机科技有限公司 | 基于操作日志的分布式集群节点间配置同步方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111343277A (zh) * | 2020-03-04 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 分布式数据存储方法、***、计算机设备和存储介质 |
CN112202640A (zh) * | 2020-09-30 | 2021-01-08 | 中国工商银行股份有限公司 | 应用于容器云平台的监控方法和装置 |
CN112269337A (zh) * | 2020-10-21 | 2021-01-26 | 深圳昆仑通态科技有限责任公司 | 一种用于运行scada***的方法、***及存储介质 |
CN116414579A (zh) * | 2023-02-21 | 2023-07-11 | 北京友友天宇***技术有限公司 | 基于分布式群组通信实现的多副本间数据一致性的方法 |
CN116414579B (zh) * | 2023-02-21 | 2024-05-10 | 北京友友天宇***技术有限公司 | 基于分布式群组通信实现的多副本间数据一致性的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109165261A (zh) | 数据同步方法、装置、服务器及计算机存储介质 | |
CN111459763B (zh) | 跨kubernetes集群监控***及方法 | |
CN110262902B (zh) | 信息处理方法及***、介质和计算设备 | |
US10129373B2 (en) | Recovery of a network infrastructure to facilitate business continuity | |
CN109710615A (zh) | 数据库的访问管理方法、***、电子设备和存储介质 | |
US10652099B2 (en) | Site asymmetric topology reconciliation in a computer cluster | |
JP6279744B2 (ja) | eメールのウェブクライアント通知の待ち行列化方法 | |
CN110083455A (zh) | 图计算处理方法、装置、介质及电子设备 | |
US20230403215A1 (en) | Systems and methods of monitoring and controlling remote assets | |
CN109905286A (zh) | 一种监控设备运行状态的方法和*** | |
CN108874828A (zh) | 数据迁移的方法和装置 | |
CN109144785A (zh) | 用于备份数据的方法和装置 | |
CN114089974B (zh) | 云端代码开发***、方法、装置、设备及存储介质 | |
CN113193947B (zh) | 实现分布式全局序的方法、设备、介质及程序产品 | |
CN110399253A (zh) | 宕机处理方法和装置 | |
CN111625949A (zh) | 一种仿真引擎***、仿真处理方法、设备和介质 | |
CN114900430A (zh) | 容器网络优化方法、装置、计算机设备和存储介质 | |
CN109873861A (zh) | 跨区块链节点的交互方法及装置、存储介质及电子设备 | |
CN111552494B (zh) | 一种容器组的管理方法、设备、***及介质 | |
US20220342742A1 (en) | Graphical management of big data pipelines | |
JP6169485B2 (ja) | 分散処理システム | |
US11797388B1 (en) | Systems and methods for lossless network restoration and syncing | |
Tu et al. | Modeling and reliability evaluation of Avionics Clouds based on AADL and GSPN | |
JP6523319B2 (ja) | メッセージ再送信メカニズムの技術 | |
US20230148034A1 (en) | System and Method for Coordinating and Executing Complex Communications Tasks Using Structured Messaging and Off-Line Synchronization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Nanshan District Xueyuan Road in Shenzhen city of Guangdong province 518000 No. 1001 Nanshan Chi Park A7 building 7 floor Applicant after: Shenzhen euribo Technology Co., Ltd Address before: Nanshan District Xueyuan Road in Shenzhen city of Guangdong province 518000 No. 1001 Nanshan Chi Park A7 building 7 floor Applicant before: SHENZHEN ORVIBO TECHNOLOGY Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190108 |