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

陈哈哈GO 发布于 2013/11/15 02:56
阅读 610
收藏 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个时间段形成一个周期。这样做,结构上最简单,但是需要保证每个设备能持续存在。
中山野鬼
中山野鬼
回复 @张亦俊 : 通过时间周期来进行。某个时间周期内发送方是确定的,可以通过指定周期内的反馈信号再判定是否下个周期仍然重返。也即,a在第一个周期内发,只有b会收,如果b 奔溃而没有给a反馈,a会在第二个周期重发,此时由C接收,并反馈,第三个周期仍然是C发送给d的,至于周期同步这个就更简单了,独立的一个协议进行。
张亦俊
张亦俊
该评论暂时无法显示,详情咨询 QQ 群:点此入群
中山野鬼
中山野鬼
回复 @桥下一粒砂 : 我是说逻辑上的环路,目的是简化接口协议。4个被炸了,这个期间的任何数据也不能同步。同步总要将个周期性。
陈哈哈GO
陈哈哈GO
该评论暂时无法显示,详情咨询 QQ 群:点此入群
0
gvim
gvim
通讯是简单的。因为你的环境是各自都可产生数据,因此困难在事务如果你的应用涉及事务的话。
陈哈哈GO
陈哈哈GO
是的。这正是我觉得使用Git来管理数据文件是非常天真的原因
0
中山野鬼
中山野鬼

引用来自“gvim”的答案

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