我将从我最感兴趣的场景开始:
我们有多个设备(2-10),它们都需要了解不断增长的数据集(千到几十万个小块,比如每个小块100到1000个字节)。数据可以在任何设备上生成,我们希望每个设备都能够获取所有数据(编辑:..eventually. )设备并不总是连接和/或联机,但它们不时地同步)没有数据需要删除或修改。
当然,有一些幼稚的方法来处理这个问题,但我认为它们都有一些主要的缺点。天真地将我所拥有的一切发送给其他人,会导致性能不佳,很多旧的数据会被一次又一次地发送。首先发送库存,然后让其他设备请求它们丢失的内容,这对小数据没有多大好处。因此,也许让每个设备记住他们交谈的时间和对象可能是一种值得的权衡?只要合作伙伴的数量相对较少,保存上次同步的日期就不会占用那么多空间,但是应该很容易发送自那以后添加的内容。
但这只是猜测。
这可能是一个非常广泛的话题,而且我也对整个问题感兴趣:(分散的)版本控制可能会做一些与我想要的类似的事情,就像一段软件同步从用户智能电话、平板电脑和照相机到在线存储等的照片一样。但不知为何,它们都不一样,而且有很多因素,比如数据大小、带宽、一致性要求、处理能力,或者有多少设备在同步之间聚合了新数据,请记住,关于这一点的理论是什么?我在哪里可以找到关于什么有效和什么不起作用的论文,或者说,每一个案例都与所有其他案例有很大的不同,以至于没有一个好的全方位解决方案?
Clarification:我不是在寻找现成的软件解决方案/产品。这更像在图中使用什么搜索算法来查找路径的问题。计算机科学书籍可能会告诉你,它取决于图形的特征(有向?加权?超图?欧几里得?)或者你最终是否需要每一条可能的道路,还是只需要几条。无论你需要什么,都有不同的算法。我还考虑在https://cs.stackexchange.com/上发布这个问题。
发布于 2016-12-09 16:15:24
在您的情况下,我将研究实现AMQP标准(如RabbitMQ或OpenAMQ )的消息传递服务,每次发出一个新的块时,都应该将其发送到AMQP,后者将将其广播到所有设备队列。然后,消息可能被推送给消费者或从队列中拉出。
发布于 2016-12-09 19:14:30
您还可以考虑将卡夫卡用于从多个生产者到多个消费者的数据流。其他可能是ZeroMQ。这取决于你的具体需要。
发布于 2016-12-11 09:45:49
您考虑过使用Amazon简单通知服务来解决这个问题吗?
您可以为要保持同步的每组设备创建一个主题。每当dataset中有更新时,设备就可以发布到主题,然后再将主题推送到使用SNS的所有设备上。
https://stackoverflow.com/questions/41063563
复制相似问题