2015-11-06 66 views
0

网络集群中有n节点。文件可能会上传到任何节点,然后必须分发给其他每个节点。这种分发不必在事务中发生(事实上它不一定,分布式事务不会扩展),并且一些延迟是可以接受的,尽管这一点很小。冲突可以任意解决(通常最后写入胜利),前提是分辨率也分配给所有节点,以便最终所有节点具有相同的一组文件。可以动态添加和删除节点,而无需重新配置现有节点。必须没有单点故障和解决此问题所需的附加框(如RabbitMQ)集群中n个Web服务器之间的文件同步

我在考虑使用consul.io进行动态配置,以便每个节点都可以参考consul来确定其他节点可用并编写守护进程(Golang),监视相关文件夹并使用ZeroMQ与其他节点通信。

感觉就像我会重新发明轮子虽然。这是一个常见问题,我希望有一些我不知道的解决方案?或者,也许我的方法是错误的,还有另一种方法来解决这个问题?

回答

1

是,已有一些东西与最近分布式同步怎么回事:

你可以使用syncthing(开放源代码)或BitTorrent Sync

Syncthing是基于节点的,即您将节点添加到群集并选择要同步的文件夹。基于文件夹的BTSync,即你获得一个文件夹的“秘密”,并可以与该文件夹群中的每个人同步。根据我的经验,BTSync具有更好的发现和连通性,但整个同步过程是封闭源,没有人真正知道发生了什么。 Syncthing被写入,但有时难以发现同伴。

同步和BTSync都使用LAN发现通过广播和追踪器发现,AFAIK。或者,如果你真的很酷,请使用IPFS来托管最新版本,IPNS将其“命名”并将IPNS挂载到服务器上。您可以将IPFS引导程序列表设置为某些服务器,这些服务器甚至可以让您独立于外部追踪器。 :)

相关问题