我们有一个机器集群(大约 50 台,并且还在不断增加)。每台机器都有一个搜索索引,每天需要更新多次。我们目前在每台机器上单独更新索引,但理想情况下,我们可以在一台机器上更新它,然后将新文件同步到集群的其余部分。我们最初使用 rsync 来处理这个问题,但随着机器数量的增加,很明显这种解决方案无法扩展。我刚刚开始研究多播文件传输。有经验的人可以建议一些可以查看的地方吗?
答案1
这曾经是我面试时遇到的一道问题...
多播选项:
BitTorrent
其他使用发布/订阅消息的协议。
另一种方法...使用分发树:
发送到 N 个主机,这些主机依次发送到 N 个主机;然后按照这种方式沿着树向下工作。当然,这需要您进行一些开发工作,但这可能是更具可扩展性的方法。
这主要取决于您实际需要满足的系统数量、索引大小和网络基础设施。
答案2
使用共享文件系统可能会更好,尤其是当搜索索引对于使用搜索索引的应用程序而言是只读的(即在目标端)。这样,大部分复杂性就都为你解决了。
答案3
尝试一下 bittorrent。它旨在快速将文件传播到多个主机。多播将使您的网络工程师痛苦地尖叫 :)
答案4
我建议你看一下 git。我过去曾用它在一台服务器上进行更改并推送它们,或者在其他服务器上执行 cron 作业以将它们拉下。该解决方案具有相当大的灵活性。