CN103747091A - 一种嵌入式设备的分布式数据同步系统及方法 - Google Patents
一种嵌入式设备的分布式数据同步系统及方法 Download PDFInfo
- Publication number
- CN103747091A CN103747091A CN201410020536.XA CN201410020536A CN103747091A CN 103747091 A CN103747091 A CN 103747091A CN 201410020536 A CN201410020536 A CN 201410020536A CN 103747091 A CN103747091 A CN 103747091A
- Authority
- CN
- China
- Prior art keywords
- data
- server
- client
- embedded device
- primary server
- 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
Images
Abstract
本发明提供一种嵌入式设备的分布式数据同步系统及方法,通过在每个嵌入式设备上部署客户端,在云端部署服务器组,同步数据从一个客户端通过一个或多个服务器同步到另一个客户端上,其中客户端不保存数据,而是提供数据同步的接口,服务器组包括相互连接的主用服务器和至少一个备用服务器,主用服务器对接收的数据进行保存,且在其他的客户端取走所述接收的数据后删除所述接收的数据,所述备用服务器在所述主用服务器故障后会升级成主用服务器。利用服务器组与客户端的通信和服务器组之间的通信,实现了不同网络节点间的数据实时同步和可靠传输,同时利服务器组的存储转发机制减少了资源消耗以及降低了因系统故障而导致的数据丢失的风险。
Description
技术领域
本发明涉及计算机多媒体通信技术领域,尤其涉及一种嵌入式设备的分布式数据同步系统及方法。
背景技术
随着IT产业的进步和物联网的发展,越来越多的传统设备正在变得更加“智能”。智能设备能够自动判断场景并做出响应,能够与其他的设备联网并传输数据。智能手机、智能电视已经极大的改变了人们的生活,未来智能家电、智能交通管理系统、车联网、智能监控系统等等会得到更为广泛的应用。通过固定网络和移动网络,越来越多的嵌入式设备会接入到互联网,这些设备之间的数据同步成为一个比较核心的问题,例如,在智能会议系统中,如何将与会人员的列表实时同步到不同的会议终端(包括传统PC终端、智能手机终端、平板电脑终端等)。
传统的分布式数据同步方法主要有基于数据库的同步和基于内存的同步。在基于数据库的同步方法中,多个设备连接到一个或者多个数据库,实现数据共享,这样做带来的问题有:
(1)实时性差,数据和节点的增多会导致访问越来越慢;
(2)通用性差,当有新增的业务需求时就需要重新设计数据库,业务经常变更时基本无法使用。
在基于内存的同步方法中,设备将数据维护在自己的内存中,通过网络连接同步到其他设备,这种方法的问题有:
(1)可靠性差,当内存中含有关键数据的设备发生故障丢失数据时,会带来损失;
(2)可扩展性差,处于不同网络内部节点之间的通信变得异常复杂。
同时,由于嵌入式系统的特殊性,例如CPU、内存、存储资源受限,网络环境复杂,普通的分布式数据同步方法移植到嵌入式系统上会不能兼容。
因此,需要一种新的嵌入式设备的分布式数据同步系统及方法,以避免上述缺陷。
发明内容
本发明的目的在于提供一种嵌入式设备的分布式数据同步系统及方法,能够实现嵌入式设备之间的数据同步,同时达到传输可靠、实时同步的要求。
为解决上述问题,本发明提出一种嵌入式设备的分布式数据同步系统,包括:客户端和服务器组;所述客户端运行在每个嵌入式设备上,用于提供数据同步的接口,实现客户端将数据上传到服务器组以及从服务器组上取走数据;所述服务器组用于从客户端或者其他服务器组接收数据,并提供存储转发的功能,每个服务器组包括相互连接的主用服务器和至少一个备用服务器,主用服务器对接收的数据进行保存,且在其他的客户端取走所述接收的数据后删除所述接收的数据,所述备用服务器在所述主用服务器故障后会升级成主用服务器。
进一步的,在所述客户端将多条数据上传并再进行一次提交操作后,所述主用服务器将多条数据作为一组数据保存并同步到其他客户端,且在当所述一组数据中的一条数据同步失败后让客户端对所述一组数据重新同步。
进一步的,所述客户端上设有消息触发器,用于在接收数据过程中监视所述客户端上到达的消息,并在有新消息到达时调用客户端上的应用程序进行处理。
进一步的,所述客户端向服务器组发出操作请求,然后等待服务器组返回响应消息,若超时仍未得到响应,则返回失败。
进一步的,所述客户端与服务器组之间通过局域网连接,服务器组之间通过互联网、局域网或广域网连接。
进一步的,所述主用服务器包括:
日志管理模块,用于将其他模块在调试运行过程中产生的日志记录下来;
内存管理模块,用于从所在服务器的操作系统中申请一块大内存以组织成大小不等的内存块供其他模块调用;
系统管理模块,用于管理各个模块初始化顺序以及主用服务器和备用服务器之间状态维护;
内部连接管理模块,用于维护管理其所在的服务器与各个客户端之间的连接关系;
外部连接管理模块,用于维护管理其所在的服务器与外部服务器之间的连接关系;
发送路由管理模块,用于维护管理数据发送者与数据目的地队列之间的路由关系,该路由关系由数据发送者在发送之前创建;
接收路由管理模块,用于维护管理数据接收者与数据接收队列之间的路由关系,该路由关系由数据接收者在接收之前创建;
数据队列管理模块,用于管理客户端创建的数据队列,负责在数据转发的过程中缓存数据;
数据存储模块,用于通过嵌入式数据库将收到的数据保存在存储介质中。
进一步的,所述系统管理模块在初始化阶段会向其所在的服务器组中的另一个服务器发送主备竞争消息以确定主备关系,并在运行阶段会与其所在的服务器组中的另一个服务器互发心跳,当系统管理模块所在服务器为备用服务器且丢失主用服务器的心跳,则会启动主备切换,系统管理模块所在服务器取代主用服务器。
进一步的,所述数据队列管理模块在数据目的地是外部服务器组时会自动创建通向外部服务器组的数据队列。
本发明还提出一种应用上述的嵌入式设备的分布式数据同步系统进行嵌入式设备的分布式数据同步的方法,包括:
在云端部署至少一个服务器组并在每个嵌入式设备部署客户端;
其中一数据发送方的嵌入式设备通过其客户端将需要同步的数据发给连接的主用服务器,并当数据发送完毕后发送数据提交消息;
数据发送方的主用服务器收到数据提交消息后,查找路由,以与数据接收方的主用服务器或者嵌入式设备的客户端通信;
所述数据接收方的嵌入式设备的客户端从连接的主用服务器上获取所述需要同步的数据。
进一步的,所述数据发送方的主用服务器与数据接收方的主用服务器处在不同的网络中,数据发送方的主用服务器收到客户端数据提交消息后,查找路由,转发数据到数据接收方的局域网的主用服务器,数据接收方的主用服务器收到数据后,检查路由,确定数据接收方局域网内接收数据的客户端,并将数据缓存至该接收数据的客户端的接收队列;所述接收数据的客户端的接收线程从数据接收方的主用服务器上接收数据,并将接收好的数据呈现在嵌入式设备上。
进一步的,其中一数据发送方的嵌入式设备通过其客户端将需要同步的数据发给连接的主用服务器,并当数据发送完毕后发送数据提交消息,具体包括:
作为数据发送方的嵌入式设备通过其客户端在本地主用服务器上创建数据发送队列;
作为数据发送方的嵌入式设备通过其客户端在本地主用服务器上创建发送路由关系;
作为数据发送方的嵌入式设备通过其客户端发起同步,将同步数据通过其客户端发送至本地主用服务器,本地主用服务器的发送数据队列收到数据以后首先保存在内存中;
作为数据发送方的嵌入式设备通过其客户端发起提交操作,本地主用服务器收到提交消息以后,将缓存在内存中的数据写入嵌入式数据库当中。
进一步的,数据发送方的主用服务器收到数据提交消息后,查找路由,以与数据接收方的主用服务器或者嵌入式设备的客户端通信,具体包括:
数据发送方的本地主用服务器在收到数据提交消息后将前面收到的一组数据保存到存储介质;
数据发送方的本地主用服务器查找路由表,判断数据同步的目的地是本地客户端还是外部客户端,若是本地客户端,则自动创建发送队列和接收队列之间的路由关系;若是外地客户端,则在外部连接表之中找到对应的外部连接,并创建到远端接收队列的路由通道,并检查其与数据接收方的服务器组之间的链路是否可用,若可用则转发数据,若不可用则缓存数据,待链路建立成功后转发;
数据转发成功后,数据发送方的本地主用服务器从存储介质中删除消息。
进一步的,所述数据发送方的本地主用服务器若未收到数据提交消息或者一组数据不全,则向数据发送方的客户端发送提交失败消息,并丢弃收到的数据。
进一步的,所述数据接收方的嵌入式设备的客户端从连接的主用服务器上获取所述需要同步的数据,具体包括:
数据接收方的嵌入式设备通过客户端注册数据处理的回调方法;
数据接收方的嵌入式设备通过客户端在其本地主用服务器上创建数据接收队列;
数据接收方的嵌入式设备通过客户端在其本地主用服务器上创建接收路由关系;
数据接收方的本地服务器组根据所述路由关系将数据发送方发送的同步数据转发至数据接收方的客户端;
数据接收方的嵌入式设备通过客户端接收所述同步数据;
待数据转发完毕后,数据接收方的本地主用服务器向数据接收方的客户端发送一个提交消息,数据接收方的客户端在收到提交消息以后,验证收到的消息的完整性,并回复给数据接收方的本地主用服务器;所述数据接收方的本地主用服务器待客户端返回提交成功消息后,从本地的存储介质中删除数据;
数据接收方的客户端调用所述用户注册的回调方法,对接收的同步数据进行处理。
与现有技术相比,本发明提供的嵌入式设备的分布式数据同步系统及方法,通过在每个嵌入式设备上部署客户端,在云端部署服务器组,同步数据从一个客户端通过一个或多个服务器同步到另一个客户端上,其中客户端不保存数据,而是提供数据同步的接口,服务器组包括相互连接的主用服务器和至少一个备用服务器,主用服务器对接收的数据进行保存,且在其他的客户端取走所述接收的数据后删除所述接收的数据,所述备用服务器在所述主用服务器故障后会升级成主用服务器。利用服务器组与客户端的通信和服务器组之间的通信,实现了不同网络节点间的数据实时同步和可靠传输,同时利服务器组的存储转发机制减少了资源消耗以及降低了因系统故障而导致的数据丢失的风险;进一步地采用用户程序注册数据处理函数的方式,可以方便的扩展用户支持的业务。
附图说明
图1是本发明具体实施例的嵌入式设备的分布式数据同步系统的架构图;
图2是本发明具体实施例的嵌入式设备的分布式数据同步系统的服务器组的架构图;
图3是本发明具体实施例的嵌入式设备的分布式数据同步方法的流程图。
具体实施方式
本发明的核心思想是公开一种嵌入式设备的分布式数据同步系统及方法,通过在每个嵌入式设备上部署客户端,在云端部署服务器组,同步数据从一个客户端通过一个或多个服务器同步到另一个客户端上,其中客户端不保存数据,而是提供数据同步的接口,服务器组包括相互连接的主用服务器和至少一个备用服务器,主用服务器对接收的数据进行保存,且在其他的客户端取走所述接收的数据后删除所述接收的数据,所述备用服务器在所述主用服务器故障后会升级成主用服务器。利用服务器组与客户端的通信和服务器组之间的通信,实现了不同网络节点间的数据实时同步和可靠传输,同时利服务器组的存储转发机制减少了资源消耗以及降低了因系统故障而导致的数据丢失的风险;进一步地采用用户程序注册数据处理函数的方式,可以方便的扩展用户支持的业务。
为使本发明的目的、特征更明显易懂,下面结合附图对本发明的具体实施方式作进一步的说明,然而,本发明可以用不同的形式实现,不应认为只是局限在所述的实施例。
请参考图1,本发明提供一种嵌入式设备的分布式数据同步系统,在需要保持数据同步的每个嵌入式设备上运行一个同步客户端,简称Client,Client负责将数据发送到数据服务器,简称Server,Server再转发给需要被同步的Client。所述嵌入式设备的分布式数据同步系统包括:客户端和服务器组;所述客户端运行在每个嵌入式设备上,用于提供数据同步的接口,实现客户端将数据上传到服务器组以及从服务器组上取走数据;所述服务器组用于从客户端或者其他服务器组接收数据,并提供存储转发的功能,每个服务器组包括相互连接的主用服务器和至少一个备用服务器,主用服务器对接收的数据进行保存,且在其他的客户端取走所述接收的数据后删除所述接收的数据,所述备用服务器在所述主用服务器故障后会升级成主用服务器。
需要说明的是,Client并不存储数据,Client主要职责是提供用户进行数据同步的接口,并将数据上传到Server,因此需要Client和Server部署在同一个稳定、可靠的网络环境中。Server主要负责从Client或者其他Server接收消息,并提供存储转发的功能。Server和Server之间具有可靠传输机制,可以部署在不同网络中,不同的网络可以是不同的局域网、互联网、广域网。由于嵌入式设备系统上资源受限的特殊性,Client的设计需要尽量轻量化,并且需要支持多种类型的CPU和操作系统。Client与Server之间采用同步消息的机制,即Client向Server发出操作请求,然后等待Server返回响应消息,若超时仍未得到响应,则返回失败。Server部署在能力较强的计算机上,负责消息的可靠存储与转发。Server与Client应部署在同一个可靠稳定的网络之内,以保证系统运行的效率。当不同网络之间的嵌入式智能节点需要进行数据同步时,需要在每个网络中部署Server,每个节点与本地的Server进行通信,网络与网络之间的通信由Server进行维护。
请参考图1中,本实施例中,存在两个网络:局域网1和局域网2,局域网1中部署了智能节点a、b、m(即安装了客户端Client的嵌入式设备)以及该网络的本地服务器组(即主用服务器Sever A和备用服务器Sever A’组成的服务器组),局域网2中部署了智能节点x、y(嵌入式设备x、y)以及该网络的本地服务器组(即主用服务器Sever B和备用服务器Sever B’组成的服务器组),智能节点a、b、m与其本地服务器组之间通过局域网1连接,智能节点x、y与其本地服务器组之间通过局域网2连接,两个服务器组之间通过IP网(可以是互联网、局域网或者广域网)连接。本实施例中,局域网1中的智能节点a、b、m之间可以进行本地数据同步,局域网2中部署了智能节点x、y之间也可以进行本地数据同步;智能节点a、b、m中的任意一个节点可以与智能节点x、y中的任意一个节点之间可以外地数据同步。
当局域网1中的嵌入式智能节点a要与局域网2中的嵌入式智能节点x进行数据同步,过程如下:
(1)嵌入式智能节点a通过客户端Client在Server A上创建数据发送队列以及发送路由关系,然后嵌入式智能节点a通过客户端Client将需要同步的一组数据发给Server A,当这组数据发送完毕以后发送数据提交消息(commit);
(2)Server A收到嵌入式智能节点a发送的数据提交消息以后,依次进行下列操作:
将前面收到的一组数据保存到存储介质,避免数据丢失;如果当由于某些原因未提交或者提交失败,未收到数据提交消息或者一组数据不全,则向嵌入式智能节点a发送提交失败消息,并丢弃收到的数据,这是一种事务操作,可以让Client对一组数据进行提交,一组中的一个数据失败,整组都失败,可以防止Client收到没有形成完整功能的数据;
Server A查找路由表,判断同步目的地是本地还是外部Server,本例中需要同步到外部Server B;
检查链路是否可用,本例中检查Server A与Server B之间的链路,若可用则转发数据,若不可用则缓存数据,待链路建立成功后转发;
数据转发成功后,Server A从存储介质中删除消息,Server支持主备操作,当Server A故障时Server A’会升级成主用Server;
(3)Server B收到数据以后,检查路由表,判断出同步目的地嵌入式智能节点x是本地客户端Client,则将数据缓存至嵌入式智能节点x Client的接收队列中,待Client将数据取出以后从本地接收队列中删除数据;
(4)嵌入式智能节点x Client的接收线程不断尝试从Server B上接收数据,当获取到一组完整的同步数据以后,嵌入式智能节点x Client触发用户回调方法,将数据呈现给用户的应用程序,由于接收数据的回调机制,嵌入式智能节点x Client的应用程序不必一直等待消息接收函数返回接收到的消息,嵌入式智能节点x Client上的消息接收触发器会监视本Client上消息到达的情况,当有新消息到达时,调用用户注册的应用程序进行处理。
请参考图2,本实施例的主用服务器A和B,均包括:日志管理模块、内存管理模块、系统管理模块、内部连接管理模块、外部连接管理模块、发送路由管理模块、接收路由管理模块、数据队列管理模块以及数据存储介质。
日志管理模块:负责将其他模块在调试运行过程中产生的日志记录下来。支持日志分级功能,通过函数开关可以控制打印详细日志还是概要日志;支持日志容量管理,当日志文件大小超过配额则自动清理;采用独立线程,不会因为进行IO操作而阻塞主要的线程;
内存管理模块:负责从操作系统申请一块大内存,然后组织成大小不等的内存块供其他模块调用,防止频繁的申请、释放内存操作导致内存碎片的产生。
系统管理模块:负责各个模块初始化顺序以及主备之间状态维护。本模块在初始化阶段会向伙伴服务器(同一服务器组的主用服务器与备用服务器相互成为伙伴服务器)发送主备竞争消息(例如Server A向Server A’发送主备竞争消息),确定主备关系;在运行阶段会与伙伴服务器互发心跳,当备用服务器丢失主用服务器的心跳后,会启动主备切换,取代主用服务器。
内部连接管理模块:负责维护管理服务器与各个本地Client之间的连接关系。
外部连接管理模块:负责维护管理服务器与外部服务器之间的连接关系。
发送路由管理模块:负责维护管理数据发送者与数据目的队列之间的路由关系,该路由关系由数据发送者在发送之前创建。
接收路由管理模块:负责维护管理数据接收者与数据接收队列之间的路由关系,该路由关系由数据接收者在接收之前创建。
数据队列管理模块:数据队列由Client创建,负责在数据转发的过程中缓存数据。数据发送者发出的数据经过一个或者多个数据队列以后才会转发到数据接收者,如果Server判断数据目的地是外部Server,则会自动创建通向外部Server的数据队列。
数据存储介质:为了防止Server因为故障或者掉电而丢失数据,采用嵌入式数据库将收到的数据保存在存储介质中。
应用图1所示的嵌入式设备的分布式数据同步系统和图2所示的服务器进行一个完整的数据同步的流程描述如下:
S1,数据发送方和数据接收方均有安装Client,数据接收方注册数据处理的回调方法;
S2,数据接收方通过Client在本地Server上创建数据接收队列;
S3,数据接收方通过Client在本地Server上创建接收路由关系,表示哪个Client可以从哪个数据队列上获取消息;一个数据接收队列可以支持多个接收的Client,当有多个Client接收时,支持两种接收模式:(1)多个Client会轮流收到数据,适用于负载均衡的场合;(2)每个Client都会收到一份数据的拷贝,适用于发布订阅的场合;
S4,数据发送方通过Client在本地Server上创建数据发送队列;
S5,数据发送方通过Client在本地Server上创建发送路由关系,表示哪个Client可以在哪个数据队列上发送消息;Server会根据发送队列的名称判断转发目的地是本地队列还是外部Server上的队列,如果是本地队列,则自动创建发送队列和接收队列之间的路由关系;如果是外地队列,则在外部连接表之中找到对应的外部连接,并创建到远端接收队列的路由通道;
S6,数据发送方发起同步,将同步数据通过Client发送至本地Server,本地Server的发送数据队列收到数据以后首先保存在内存中;
S7,数据发送方发起提交操作,本地Server收到提交消息以后,将缓存在内存中的数据写入嵌入式数据库当中;
S8,根据S5中创建的路由关系,本地Server上的发送数据队列将缓存的数据转发至目标接收队列,目标接收队列可能是在本地,也可能是在外部的Server上;当目标在外部的Server上时,可能因为网络故障导致传输中断,此时发送数据队列继续缓存数据,待网络恢复以后继续发送缓存的数据;数据接收队列在收到数据以后,缓存在内存中;
S9,待本地Server上的发送数据队列中的数据全部转发至目标接收队列以后,向目标接收队列发送提交消息,并将数据从本地发送队列中删除;
S10,目标数据接收队列收到提交消息以后,将前面缓存在内存中的数据写入存储介质中;
S11,目标数据接收队列根据S3创建的路由关系,将数据转发至数据接收方的Client;
S12,待数据转发完毕以后,数据接收队列向接收的Client发送一个提交消
息,待Client端返回提交成功以后,从本地的存储介质中删除数据;
S13,数据接收方的Client在收到提交消息以后,验证S11中收到的消息的完整性,并回复给数据接收队列;
S14,数据接收方的Client调用S1中用户注册的回调方法,对数据进行处理。
由上可见,本实施例的同步方法适用于嵌入式系统,每个嵌入式设备部署Client,数据同步方法的过程是将数据从一个Client,通过一个或多个Server,同步到另一个Client的过程,这个过程中Server需要负责存储与转发,并保证消息的可靠性。数据同步流程主要包括:Client A将需要同步的数据发给ServerA,当数据发送完毕后发送数据提交消息;Server A收到数据提交消息后,查找路由,并转发数据到Server B;Server B收到数据后,检查路由并判断出同步目的地是本地Client X,则将数据缓存至本地Client的接收队列;Client X的接收线程从Server B上接收数据,并触发用户回调将数据呈现给用户的应用程序。
综上所述,本实施例提供的嵌入式设备的分布式数据同步方法,包括以下步骤:
在云端部署至少一个服务器组并在每个嵌入式设备部署客户端;
其中一数据发送方的嵌入式设备通过其客户端将需要同步的数据发给连接的主用服务器,并当数据发送完毕后发送数据提交消息;
数据发送方的主用服务器收到数据提交消息后,查找路由,以与数据接收方的主用服务器或者嵌入式设备的客户端通信;
所述数据接收方的嵌入式设备的客户端从连接的主用服务器上获取所述需要同步的数据。
进一步的,所述数据发送方的主用服务器与数据接收方的主用服务器处在不同局域网中,数据发送方的主用服务器收到客户端数据提交消息后,查找路由,转发数据到数据接收方的局域网的主用服务器,数据接收方的主用服务器收到数据后,检查路由,确定数据接收方局域网内接收数据的客户端,并将数据缓存至该接收数据的客户端的接收队列;所述接收数据的客户端的接收线程从数据接收方的主用服务器上接收数据,并将接收好的数据呈现在嵌入式设备上。
进一步的,其中一数据发送方的嵌入式设备通过其客户端将需要同步的数据发给连接的主用服务器,并当数据发送完毕后发送数据提交消息,具体包括:
作为数据发送方的嵌入式设备通过其客户端在本地主用服务器上创建数据发送队列;
作为数据发送方的嵌入式设备通过其客户端在本地主用服务器上创建发送路由关系;
作为数据发送方的嵌入式设备通过其客户端发起同步,将同步数据通过其客户端发送至本地主用服务器,本地主用服务器的发送数据队列收到数据以后首先保存在内存中;
作为数据发送方的嵌入式设备通过其客户端发起提交操作,本地主用服务器收到提交消息以后,将缓存在内存中的数据写入嵌入式数据库当中。
进一步的,数据发送方的主用服务器收到数据提交消息后,查找路由,以与数据接收方的主用服务器或者嵌入式设备的客户端通信,具体包括:
数据发送方的本地主用服务器在收到数据提交消息后将前面收到的一组数据保存到存储介质;
数据发送方的本地主用服务器查找路由表,判断数据同步的目的地是本地客户端还是外部客户端,若是本地客户端,则自动创建发送队列和接收队列之间的路由关系;若是外地客户端,则在外部连接表之中找到对应的外部连接,并创建到远端接收队列的路由通道,并检查其与数据接收方的服务器组之间的链路是否可用,若可用则转发数据,若不可用则缓存数据,待链路建立成功后转发;
数据转发成功后,数据发送方的本地主用服务器从存储介质中删除消息。
进一步的,所述数据发送方的本地主用服务器若未收到数据提交消息或者一组数据不全,则向数据发送方的客户端发送提交失败消息,并丢弃收到的数据。
进一步的,所述数据接收方的嵌入式设备的客户端从连接的主用服务器上获取所述需要同步的数据,具体包括:
数据接收方的嵌入式设备通过客户端注册数据处理的回调方法;
数据接收方的嵌入式设备通过客户端在其本地主用服务器上创建数据接收队列;
数据接收方的嵌入式设备通过客户端在其本地主用服务器上创建接收路由关系;
数据接收方的本地服务器组根据所述路由关系将数据发送方发送的同步数据转发至数据接收方的客户端;
数据接收方的嵌入式设备通过客户端接收所述同步数据;
待数据转发完毕后,数据接收方的本地主用服务器向数据接收方的客户端发送一个提交消息,数据接收方的客户端在收到提交消息以后,验证收到的消息的完整性,并回复给数据接收方的本地主用服务器;所述数据接收方的本地主用服务器待客户端返回提交成功消息后,从本地的存储介质中删除数据;
数据接收方的客户端调用所述用户注册的回调方法,对接收的同步数据进行处理。
综上所述,本发明针对嵌入式系统中资源受限、网络不稳定的特点,提出一种嵌入式设备的分布式数据同步系统和方法,以实现嵌入式设备系统之间的数据同步,同时达到可靠,实时同步的要求。本发明的嵌入式设备的分布式数据同步系统和方法具有以下优点:
1.适用于嵌入式系统。由于嵌入式系统资源受限,因此只部署Client,采用数据服务器来存储和转发,减少了资源消耗;同时由于Client简单,适用于多种操作系统。
2.传输可靠。由于采用了存储转发机制,就算网络故障,数据服务器也会将数据缓存下来,待网络恢复以后再送达至目的地。
3.采用可扩展机制。采用用户程序注册数据处理函数的方式,可以方便的扩展用户支持的业务。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (9)
1.一种嵌入式设备的分布式数据同步系统,其特征在于,包括:客户端和服务器组;所述客户端运行在每个嵌入式设备上,用于提供数据同步的接口,实现客户端将数据上传到服务器组以及从服务器组上取走数据;所述服务器组用于从客户端或者其他服务器组接收数据,并提供存储转发的功能,每个服务器组包括一个主用服务器和一个备用服务器,主用服务器对接收的数据进行保存,且在其他的客户端取走所述接收的数据后删除所述接收的数据,所述备用服务器在所述主用服务器故障后会升级成主用服务器。
2.如权利要求1所述的嵌入式设备的分布式数据同步系统,其特征在于,在所述客户端将多条数据上传并再进行一次提交操作后,所述主用服务器将多条数据作为一组数据保存并同步到其他客户端,且在当所述一组数据中的一条数据同步失败后让客户端对所述一组数据重新同步。
3.如权利要求1所述的嵌入式设备的分布式数据同步系统,其特征在于,所述客户端上设有消息触发器,用于在接收数据过程中监视所述客户端上到达的消息,并在有新消息到达时调用嵌入式设备的应用程序进行处理。
4.如权利要求1所述的嵌入式设备的分布式数据同步系统,其特征在于,所述客户端与服务器组之间通过局域网连接,服务器组之间通过互联网、局域网或广域网连接。
5.如权利要求1至4中任一项所述的嵌入式设备的分布式数据同步系统,其特征在于,所述主用服务器包括:
日志管理模块,用于将其他模块在调试运行过程中产生的日志记录下来;
内存管理模块,用于从所在服务器的操作系统中申请一块大内存以组织成大小不等的内存块供其他模块调用;
系统管理模块,用于管理各个模块初始化顺序以及主用服务器和备用服务器之间状态维护;
内部连接管理模块,用于维护管理其所在的服务器与各个客户端之间的连接关系;
外部连接管理模块,用于维护管理其所在的服务器与外部服务器之间的连接关系;
发送路由管理模块,用于维护管理数据发送者与数据目的地队列之间的路由关系,该路由关系由数据发送者在发送之前创建;
接收路由管理模块,用于维护管理数据接收者与数据接收队列之间的路由关系,该路由关系由数据接收者在接收之前创建;
数据队列管理模块,用于管理客户端创建的数据队列,负责在数据转发的过程中缓存数据;
数据存储模块,用于通过嵌入式数据库将收到的数据保存在存储介质中。
6.如权利要求5所述的嵌入式设备的分布式数据同步系统,其特征在于,所述系统管理模块在初始化阶段会向其所在的服务器组中的另一个服务器发送主备竞争消息以确定主备关系,并在运行阶段会与其所在的服务器组中的另一个服务器互发心跳,当系统管理模块所在服务器为备用服务器且丢失主用服务器的心跳,则会启动主备切换,系统管理模块所在服务器取代主用服务器。
7.如权利要求5所述的嵌入式设备的分布式数据同步系统,其特征在于,所述数据队列管理模块在数据目的地是外部服务器组时会自动创建通向外部服务器组的数据队列。
8.一种应用权利要求1至7中任一项所述的分布式数据同步系统进行嵌入式设备的分布式数据同步的方法,其特征在于,包括:
在云端部署至少一个服务器组并在每个嵌入式设备部署客户端;
其中一数据发送方的嵌入式设备通过其客户端将需要同步的数据发给连接的主用服务器,并当数据发送完毕后发送数据提交消息;
数据发送方的主用服务器收到数据提交消息后,查找路由,以与数据接收方的主用服务器或者嵌入式设备的客户端通信;
所述数据接收方的嵌入式设备的客户端从连接的主用服务器上获取所述需要同步的数据。
9.如权利要求8所述的嵌入式设备的分布式数据同步方法,其特征在于,所述数据发送方的主用服务器与数据接收方的主用服务器处在不同的网络中,数据发送方的主用服务器收到客户端数据提交消息后,查找路由,转发数据到数据接收方的局域网的主用服务器,数据接收方的主用服务器收到数据后,检查路由,确定数据接收方局域网内接收数据的客户端,并将数据缓存至该接收数据的客户端的接收队列;所述接收数据的客户端的接收线程从数据接收方的主用服务器上接收数据,并将接收好的数据呈现在嵌入式设备上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410020536.XA CN103747091A (zh) | 2014-01-16 | 2014-01-16 | 一种嵌入式设备的分布式数据同步系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410020536.XA CN103747091A (zh) | 2014-01-16 | 2014-01-16 | 一种嵌入式设备的分布式数据同步系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103747091A true CN103747091A (zh) | 2014-04-23 |
Family
ID=50504077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410020536.XA Pending CN103747091A (zh) | 2014-01-16 | 2014-01-16 | 一种嵌入式设备的分布式数据同步系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103747091A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484236A (zh) * | 2014-11-28 | 2015-04-01 | 曙光云计算技术有限公司 | 一种ha访问自适应的方法 |
CN104980519A (zh) * | 2015-06-29 | 2015-10-14 | 北京奇虎科技有限公司 | 多机房存储系统 |
CN105072021A (zh) * | 2015-08-11 | 2015-11-18 | 国电南瑞科技股份有限公司 | 一种调度自动化系统跨网段的消息转发方法 |
CN105162879A (zh) * | 2015-09-24 | 2015-12-16 | 北京奇虎科技有限公司 | 实现多机房数据一致性的方法、装置及系统 |
CN106230978A (zh) * | 2016-08-31 | 2016-12-14 | 广州市乐商软件科技有限公司 | 分布式缓存同步方法、装置及系统 |
CN106599061A (zh) * | 2016-11-16 | 2017-04-26 | 成都九洲电子信息系统股份有限公司 | 基于SQLite的嵌入式数据库同步方法 |
CN106921503A (zh) * | 2015-12-24 | 2017-07-04 | 华为技术有限公司 | 一种数据同步方法、装置及系统 |
CN108416678A (zh) * | 2017-05-05 | 2018-08-17 | 平安科技(深圳)有限公司 | 多维度数据对账方法及系统 |
CN109361744A (zh) * | 2018-09-30 | 2019-02-19 | 北京金山安全软件有限公司 | 一种隔离网络环境下的数据分发方法、装置及电子设备 |
CN110213778A (zh) * | 2018-02-28 | 2019-09-06 | 中兴通讯股份有限公司 | 一种网元主备智能配对的方法及装置 |
CN110673960A (zh) * | 2019-08-22 | 2020-01-10 | 中国平安财产保险股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
CN111459903A (zh) * | 2019-01-21 | 2020-07-28 | 顺丰科技有限公司 | 数据库管理系统及方法 |
CN111556128A (zh) * | 2020-04-24 | 2020-08-18 | 深圳警翼软件技术有限公司 | 一种数据传输方法和系统 |
CN112866218A (zh) * | 2021-01-07 | 2021-05-28 | 广州邦讯信息系统有限公司 | 远程收集系统信息的处理方法及相关设备 |
CN113391759A (zh) * | 2020-03-13 | 2021-09-14 | 华为技术有限公司 | 一种通信方法和设备 |
CN116633951A (zh) * | 2023-07-19 | 2023-08-22 | 中国电子科技集团公司第十五研究所 | 一种跨网数据同步方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1312508A (zh) * | 2001-04-28 | 2001-09-12 | 国家数字交换系统工程技术研究中心 | 一种电子邮件收发系统及方法 |
CN101079869A (zh) * | 2006-05-26 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种基于分布式的数据同步方法及系统 |
CN102868560A (zh) * | 2012-09-28 | 2013-01-09 | 南京恩瑞特实业有限公司 | 一种服务器热备实现系统及方法 |
CN103379129A (zh) * | 2012-04-12 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、服务器及分布式系统 |
-
2014
- 2014-01-16 CN CN201410020536.XA patent/CN103747091A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1312508A (zh) * | 2001-04-28 | 2001-09-12 | 国家数字交换系统工程技术研究中心 | 一种电子邮件收发系统及方法 |
CN101079869A (zh) * | 2006-05-26 | 2007-11-28 | 腾讯科技(深圳)有限公司 | 一种基于分布式的数据同步方法及系统 |
CN103379129A (zh) * | 2012-04-12 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 一种数据同步方法、服务器及分布式系统 |
CN102868560A (zh) * | 2012-09-28 | 2013-01-09 | 南京恩瑞特实业有限公司 | 一种服务器热备实现系统及方法 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104484236B (zh) * | 2014-11-28 | 2017-11-03 | 曙光云计算集团有限公司 | 一种ha访问自适应的方法 |
CN104484236A (zh) * | 2014-11-28 | 2015-04-01 | 曙光云计算技术有限公司 | 一种ha访问自适应的方法 |
CN104980519A (zh) * | 2015-06-29 | 2015-10-14 | 北京奇虎科技有限公司 | 多机房存储系统 |
CN105072021A (zh) * | 2015-08-11 | 2015-11-18 | 国电南瑞科技股份有限公司 | 一种调度自动化系统跨网段的消息转发方法 |
CN105072021B (zh) * | 2015-08-11 | 2018-02-13 | 国电南瑞科技股份有限公司 | 一种调度自动化系统跨网段的消息转发方法 |
CN105162879A (zh) * | 2015-09-24 | 2015-12-16 | 北京奇虎科技有限公司 | 实现多机房数据一致性的方法、装置及系统 |
CN105162879B (zh) * | 2015-09-24 | 2019-03-12 | 北京奇虎科技有限公司 | 实现多机房数据一致性的方法、装置及系统 |
CN106921503A (zh) * | 2015-12-24 | 2017-07-04 | 华为技术有限公司 | 一种数据同步方法、装置及系统 |
CN106921503B (zh) * | 2015-12-24 | 2020-02-21 | 华为技术有限公司 | 一种数据同步方法、装置及系统 |
CN106230978A (zh) * | 2016-08-31 | 2016-12-14 | 广州市乐商软件科技有限公司 | 分布式缓存同步方法、装置及系统 |
WO2018040168A1 (zh) * | 2016-08-31 | 2018-03-08 | 广州市乐商软件科技有限公司 | 分布式缓存同步方法、装置及系统 |
CN106599061B (zh) * | 2016-11-16 | 2020-06-30 | 成都九洲电子信息系统股份有限公司 | 基于SQLite的嵌入式数据库同步方法 |
CN106599061A (zh) * | 2016-11-16 | 2017-04-26 | 成都九洲电子信息系统股份有限公司 | 基于SQLite的嵌入式数据库同步方法 |
CN108416678A (zh) * | 2017-05-05 | 2018-08-17 | 平安科技(深圳)有限公司 | 多维度数据对账方法及系统 |
CN110213778B (zh) * | 2018-02-28 | 2021-11-05 | 中兴通讯股份有限公司 | 一种网元主备智能配对的方法及装置 |
CN110213778A (zh) * | 2018-02-28 | 2019-09-06 | 中兴通讯股份有限公司 | 一种网元主备智能配对的方法及装置 |
CN109361744A (zh) * | 2018-09-30 | 2019-02-19 | 北京金山安全软件有限公司 | 一种隔离网络环境下的数据分发方法、装置及电子设备 |
CN111459903A (zh) * | 2019-01-21 | 2020-07-28 | 顺丰科技有限公司 | 数据库管理系统及方法 |
CN110673960A (zh) * | 2019-08-22 | 2020-01-10 | 中国平安财产保险股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
CN110673960B (zh) * | 2019-08-22 | 2022-11-29 | 中国平安财产保险股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
CN113391759A (zh) * | 2020-03-13 | 2021-09-14 | 华为技术有限公司 | 一种通信方法和设备 |
CN113391759B (zh) * | 2020-03-13 | 2024-04-09 | 华为云计算技术有限公司 | 一种通信方法和设备 |
CN111556128A (zh) * | 2020-04-24 | 2020-08-18 | 深圳警翼软件技术有限公司 | 一种数据传输方法和系统 |
CN111556128B (zh) * | 2020-04-24 | 2023-04-07 | 深圳警翼软件技术有限公司 | 一种数据传输方法和系统 |
CN112866218A (zh) * | 2021-01-07 | 2021-05-28 | 广州邦讯信息系统有限公司 | 远程收集系统信息的处理方法及相关设备 |
CN116633951A (zh) * | 2023-07-19 | 2023-08-22 | 中国电子科技集团公司第十五研究所 | 一种跨网数据同步方法和装置 |
CN116633951B (zh) * | 2023-07-19 | 2023-09-29 | 中国电子科技集团公司第十五研究所 | 一种跨网数据同步方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103747091A (zh) | 一种嵌入式设备的分布式数据同步系统及方法 | |
CN108684047B (zh) | 一种无人机承载小基站通信系统与方法 | |
CN107465767B (zh) | 一种数据同步的方法和系统 | |
CN102171995B (zh) | 服务器故障时的报文处理方法及路由器 | |
CN101577722B (zh) | 实现强制mac转发功能的方法和装置 | |
US20080270485A1 (en) | Method For Processing Data Synchronization And Client Terminal, Server, And Data Synchronization System Thereof | |
CN103475566A (zh) | 一种实时消息交换平台及分布式集群组建方法 | |
CN103207841A (zh) | 基于键值对缓存的数据读写方法及装置 | |
CN101663868A (zh) | 冗余的、地理上不同的和独立可扩展的消息服务(ms)内容存储 | |
CN113572864B (zh) | 一种数据处理方法、网元设备以及可读存储介质 | |
CN100492984C (zh) | 一种通过地址解析协议报文实现数据转发备份的方法 | |
CN112087390A (zh) | 一种网络路由方法及装置 | |
CN113055539A (zh) | 一种基于VoIP双冗余交换服务器的通信系统 | |
CN107529229B (zh) | 数据传输的方法,装置及系统 | |
CN113485821A (zh) | 一种高可靠视频会议系统及其控制方法、存储介质 | |
CN109951388B (zh) | 路由不间断方法和主控板 | |
CN109413142B (zh) | 一种Linux下的iSCSI虚拟代理实现方法 | |
KR100773778B1 (ko) | 멀티캐스트 방식의 분산 서버 제어 방법 및 그 시스템 | |
US10277674B2 (en) | Apparatus for relaying data transmission in SCADA system | |
CN107872479B (zh) | 云管理平台与控制器集成方法和系统以及相关模块 | |
KR101007408B1 (ko) | 데이터 공유 기반 데이터 전송 방법 및 시스템 | |
CN110474781B (zh) | 一种组播数据转发的方法及装置 | |
CN107257272B (zh) | 数据发送方法、发送终端及接收终端 | |
CN111083182B (zh) | 分布式物联网设备管理方法及装置 | |
CN102447724A (zh) | 控制p2p下载的方法、服务器及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140423 |
|
WD01 | Invention patent application deemed withdrawn after publication |