从多个设备/服务器收集数据/向其分发数据的“标准”方法?

时间:2016-12-09 15:20:12

标签: database network-programming synchronization distributed theory

我将从我最感兴趣的场景开始:

我们有多个设备(2 - 10)都需要了解 不断增长的数据集(数千到数十万个小块, 比方说100-1000字节。 可以在任何设备上生成数据 希望每个设备都能够获取所有数据(编辑:.. 最终。设备始终没有连接和/或联机,但它们会不时同步)无需数据 被删除或修改。

当然,有一些天真的方法可以解决这个问题,但我认为 他们都有一些主要的缺点。天真地发送我的一切 对于其他所有人来说,使用大量旧数据会导致性能不佳 被一次又一次地发送。首先发送库存然后再发货 其他设备要求他们缺少的东西对小的不会有什么好处 数据。所以也许让每台设备记住他们与谁交谈的时间和对象 可能值得权衡吗?只要合作伙伴的数量 是相对较小的保存我们上次同步的日期不会那么多 空间,但是从那时起发送已添加的内容应该很容易。

但这只是猜想 这可能非常广泛 主题和我也对整个问题感兴趣:(分散)版本控制可能做类似的事情 我想要的,就像一块 软件将用户智能手机,平板电脑和相机中的照片同步到在线 存储,等等。 不知何故,它们各有不同,并且有许多因素,如数据大小,带宽,一致性要求,处理能力或有多少设备在同步之间汇总新数据,请记住,那么这个理论是什么? 我在哪里寻找 论文以及有关哪些有效,哪些无效,或者每种情况都是如此 与其他所有人不同的是,没有好的全面解决方案?

澄清:我不是在寻找现成的软件解决方案/产品。这更像是用于在图中查找路径的搜索算法的问题。计算机科学书籍可能会告诉你它取决于图形的特征​​(定向?加权?超图?欧几里得?)或者你最终是否需要所有可能的路径或只是少数。无论您需要什么,都有不同的算法。我还考虑在https://cs.stackexchange.com/上发布此问题。

3 个答案:

答案 0 :(得分:0)

在您的情况下,我会调查实现AMQP标准的消息服务,例如RabbitMQOpenAMQ,每次发出新块时,都应该将其发送到AMQP代理,这将是将其广播到所有设备队列。然后可以将消息推送给消费者或从队列中拉出。

答案 1 :(得分:0)

您还可以考虑Kafka从几个生产者到多个消费者的数据流。其他可能性是ZeroMQ。这取决于您的具体需求

答案 2 :(得分:0)

您是否考虑过使用Amazon Simple通知服务来解决此问题?

您可以为要保持同步的每组设备创建主题。只要数据集中有更新,设备就可以发布到主题,然后使用SNS将其推送到所有设备。