0

Web 集群中有n 个节点。文件可以上传到任何节点,然后必须分发到每个其他节点。这种分布不必发生在事务中(事实上它不能发生,分布式事务不能扩展)并且一些延迟是可以接受的,尽管必须是最小的。可以任意解决冲突(通常是最后一次写入获胜),前提是该解决方案也分发到所有节点,以便最终所有节点都具有相同的文件集。可以动态添加和删除节点,而无需重新配置现有节点。必须没有单点故障,也不需要额外的盒子来解决这个问题(例如 RabbitMQ)

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

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

4

1 回答 1

1

是的,最近分布式同步发生了一些事情:

您可以使用syncthing(开源)或BitTorrent Sync

Syncthing 是基于节点的,即将节点添加到集群并选择要同步的文件夹。

BTSync 是基于文件夹的,即您获得一个文件夹的“秘密”,并且可以与该文件夹群中的每个人同步。

根据我的经验,BTSync 有更好的发现和连接性,但整个同步过程是闭源的,没有人真正知道会发生什么。Syncthing 是用 go 编写的,但有时很难发现对等点。

syncthing 和 BTSync 都通过广播使用 LAN 发现和用于发现的跟踪器 AFAIK。

编辑:或者,如果你真的很酷,使用 IPFS 来托管最新版本,IPNS 来“命名”它并将 IPNS 安装在服务器上。您可以将 IPFS 引导列表设置为您的某些服务器,这甚至可以使您独立于外部跟踪器。:)

于 2015-11-06T09:09:22.053 回答