我有一个需要同步池数据集的一系列主要连接的节点的情况。它们是 200-1500K 的文件,根据环境的不同,在 30 分钟到 6 小时之间不定期更新。现在节点的数量有数百个,但理想情况下,它会增长。
目前,我正在使用 libtorrent 在节点集群之间保持一系列文件同步。我每隔几个小时做一次转储,并根据之前的种子创建一个新的 torrent。然后我使用 BEP 38 的策略关联它。然后将 infohash 发布到 DHT 中的一个已知条目,其他节点轮询以获取它。
我想知道是否有更好的方法来做到这一点。我喜欢 BitTorrent 的原因最初是为了固件更新。我不需要担心连接性不够好的节点,并且使用 DHT,它可以很好地自组装。然后扩展以同步这些池文件。
我目前正在尝试查看是否可以进行扩展,以允许我让每个节点announce_peer
为每个新记录执行一次。那么理论上相关方将能够倾听。这带来了两个大问题:
- 如何让感兴趣的节点知道有新数据?
- 如果我有 1000 个或更多节点每隔几分钟添加新的信息散列,这会对 DHT 造成什么影响?
我承认这感觉就像我试图将一个方形钉子打入一个圆孔,但我真的很想一次保持尽可能少的协议。