gpt4 book ai didi

go - 集群中 n 个 Web 服务器之间的文件同步

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:23 27 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

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

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

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

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

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

关于go - 集群中 n 个 Web 服务器之间的文件同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33562896/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com