我正在使用大规模分布式元胞自动机开发模拟。单元模拟分布在节点之间,并使用 ZooKeeper 进行协调。持久性数据存储在 Riak 中。元胞自动机本身是用 Python 编写的。
如果一个单元可以将少量(例如每秒几到几十个)消息(可能是键值对)传递给它的直接邻居(曼哈顿社区),这对我的模拟将非常方便。然而,对于数百万个单元格的模拟,天真的方法最终会产生数百万个小邮箱,每个单元格一个,并且缓慢地将消息涓涓细流到每个盒子中。这让 ZooKeeper 或 RabbitMQ 屈服了!有人推荐我 DDS,但它似乎非常企业化,而且我找不到任何 Python 绑定。
我是分布式系统开发的新手——这实际上只是一个爱好项目,看看我能走多远。我不禁觉得我走错了路,为每个小单元的邮箱转向了一个单一的消息总线。一个细胞很容易确定它的邻居和它在世界上的位置,所以看起来消息传递应该容易受到某种分块的影响。然而,这个区域演员的设计以及它如何与单个细胞进行交流却让我无法理解。我看到单元如何通过消息总线将消息传递给块,但是块如何将消息传递回单元?
我是否正在接近这个问题的真正解决方案?分布式节点将少量消息传递给其邻居的正确方法是什么?