+
 新版

多个ARM设备的数据库差异数据实时同步

陈哈哈GO 发布于 2013/11/15 02:56
阅读 704
收藏 0
软硬同构的多台设备(ARM 11平台),网状组网方式,没有中心服务器。每台设备自包含数据库,各自产生不同数据,当某个设备的数据库发生变化时,实时同步到所有设备。简单的说,就是设备间差异数据实时同步。求指导解决方案或者思路。不胜感激!

以下是问题补充:

@陈哈哈GO:感谢大家的建议。我再说明一些:ARM平台处理能力有限,解决方案不能以互联网的牛X服务器为基准。如果以一台ARM设备而言,这台ARM设备就是一个存储数据和处理业务逻辑的服务器,它的客户端是Android或者iOS设备。服务器处理的是基于图片的处理结果,给客户端返回JSON和图片URL。 (2013/11/15 17:38)
@陈哈哈GO:单个ARM服务器与客户端是C-S架构。Server就是ARM服务器群,但群的结构对Client是透明的,Client只与其中一个Server建立连接。现在需要解决的问题是:如何在没有中心数据库服务器的情况下,让ARM服务器群共享数据。 (2013/11/15 17:46)
加载中
0
Andy
Andy

每一个设备维护一个类似最后更新时间或crc版本之类的东西,

然后定时或触发广播到和其相连的设备上,发现不一致就更新

陈哈哈GO
陈哈哈GO
我曾想过用git管理数据库文件。貌似我想得天真了。
0
中山野鬼
中山野鬼

哈,请教个问题,是不是可以这样理解,在没有任何新的数据产生时,所有数据在所有设备上存在完整的备份?


陈哈哈GO
陈哈哈GO
是。在某个瞬间,所有设备应该存在着完全相同的数据。
0
中山野鬼
中山野鬼
那你这个就简单了。两个字,群发。哈。不过有些策略可以使用。比如做成环路。也就是一个buf,每个机器只从特定机器处接收,接收后,将原先属于自己发出的部分,替换成现在新采集的数据,其他数据保存下来,再发给下一个。假设5台数据。那么同一个时间段只有两台设备握手,且一个只发,一个只收,5个时间段形成一个周期。这样做,结构上最简单,但是需要保证每个设备能持续存在。
陈哈哈GO
陈哈哈GO
感谢您的建议!有很用的想法。不过,不能组成环形网络。客户的要求是,如果安装了5个设备,有4台设备被原子弹炸了,剩下的一台设备只要没挂掉也要可以完整地正常运行。当然,这说法有点夸张。不过,网状结构来群发也是可以的。另一个问题:群发什么数据?在数据库访问层添加一个代理层,代理层把业务请求群发到其它所有服务器?另外就是,原来的5个设备运行一段时间,另新增加一个设备,这个设备如何复制原有设备的数据?
0
gvim
gvim
通讯是简单的。因为你的环境是各自都可产生数据,因此困难在事务如果你的应用涉及事务的话。
陈哈哈GO
陈哈哈GO
是的。这正是我觉得使用Git来管理数据文件是非常天真的原因
0
中山野鬼
中山野鬼

引用来自“gvim”的答案

通讯是简单的。因为你的环境是各自都可产生数据,因此困难在事务如果你的应用涉及事务的话。
哈,你的观点和我一样,原则上,单点与单点的通讯协议尽可能简单。不行再稍微复杂点。
0
JYToscer
JYToscer
客户端与服务端多对多连接,每个arm设备都安装一个客户端和服务端软件,客户端负责接收其他设备发送的数据,服务端负责把数据发送给所有的客户端。再加一个线程负责新增的数据达到一定程度后就去与其他的设备校验信息是否同步。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部