繁体   English   中英

如何在Wi-Fi中的设备之间同步数据

[英]How to synchronize data amongst devices in Wi-Fi

我正在为iOS和Android开发应用程序。 基本功能是在没有中央服务器的情况下,在Wi-Fi网络中的所有设备之间保持一定数据集同步。 每个设备都可以修改该组数据。

目前的方法是通过Bonjour / Zeroconf发现其他设备,然后通过ZeroMQ向所有设备发送“更改消息”。

由于两个框架都会导致很多问题的实现,我想问这是否是实现这一目标的正确方法。

我将大部分用Bonjour和HTTP-Requests实现的逻辑发送到所有设备。 问题只是网络请求,即使经过三次尝试也无法收到,因为网络出现故障。 我希望对一般状态或更可靠的消息传递框架进行某种重构。

某种Gossip方法是否可以传播信息以及发现所有设备更好?

简单的方案不能满足所有要求。

既不是成为按需服务器的临时角色不对称,也无法像“调查(每个人投票)”那样决定变更(图-s 礼貌性的nanomsg.org

调查/投票模式

“总线模式”中的节点联盟角色对称 总线/路由模式 满足所有要求。


连续发现“阶段”

是一项作为连续自我识别操作的任务,以便为节目联盟提供相关的信息集,供他们在投票期间等待,而不是为谁投票。 相反 ,当广播< aListITEM >改变并且期望投票得到它的节点联盟“邻居”支持时是公平的。

Pieter Hintjens的400多页书籍ZeroMQ指南 - 适用于Python开发人员,第8.3章将为您提供有关自主抢先和/或合作发现的初步见解,以及前面章节中有关WiFi的一些评论。 另请注意关于ISO-OSI-L2 / L3不确定性的结束语>>> 基于WiFi SSID L3 ARP的发现限制


< aListITEM >的方法改变当前联盟节点的传播

只是要在节点联盟内实现的另一个子协议(层)。

子协议

公共汽车或具有“调查”投票的混合可扩展正式通信模式是否满足所有要求?

可能是,可能不是。

首先列出能够设计“反对”这样一个强制性功能集的所有要求。

其次, 验证功能集对于每个节点是合法且可行的,它将动态地变为/不再是节点联盟的成员。

第三, 设计非阻塞,自我恢复社区 - FSA的高阶FSA - 具有足够的握手,重新同步/监视/超时以及< aListITEM >更新和投票机制的传播,使这些符合强制性设计功能集。

不要依赖现成的原语 (代价是“弯曲”强制设计功能集,以满足库可用的原语, 而是开发另一个新的, 更高阶的形式通信模式信号 ,从库中组装原语,使其符合整个规范。)

我不知道你的问题的具体细节,但是:

  • 如果你没有很多数据
  • 如果你的更新不是很频繁(> 1 req / s)

广播UDP消息可以工作吗?

如果您查询网络并获取广播地址,这可能是分发/查询信息的简单方法,而无需单独将其发送到每个设备。 当然,UDP不可靠,因此您需要实现某种“查询”机制,一旦设备(重新)连接到网络,设备就会要求更新。

只有其他更可靠的选项,我能想到的是使用平台的推送通知。 在这种情况下,Apple / Google将确保您的消息得到传递,您唯一的工作就是将设备列表保存在“一个组”中(例如,在同一个wifi上)。 但是这个解决方案还包括拥有一个中央服务器,甚至更多的访问互联网。

让客户端 - 服务器工作可靠地工作可能非常具有挑战性 特别是跨平台; 似乎总有一个需要解决的边缘案例。 我建议使用现有的库,而不是重建轮子,其他人已经解决了所有的问题。 我还没有将它用于原型以外的任何东西,但AllJoyn开源项目看起来非常有前途。 另一个选项是Google Nearby API ,目前仅适用于Android和iOS。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM