我正在寻找将支持数以百万计的队列,每个队列处理每秒几十消息的分布式消息队列。
这些消息将是小(几十个字节),而我不希望队列变得非常长 - 几十最大每队列中的消息的数量级,但是当系统哼唱,队列应保持相当空。
我不知道有多少节点集群中的期望 - 可能依赖于具体的解决方案,但如果要我猜,我会说十个节点。 我宁愿排队是相对抗跌到集群中的各个节点故障,但这里一些丢失的消息,所以才没有让我失去的睡眠。
难道这样的消息队列存在吗? 好像大部分领域向处理数百个队列的具有高吞吐量的优化。 但什么是SQS建? 当然不是魔术。
更新:
按要求,它可能的确有助于我的问题域的线索。 (我已经离开的细节之前,以免把水搅浑。)我与分布式元胞自动机实验,用百万个细胞在模拟的初始目标。 在一些CA模型,是非常有用的添加事件模型,从而使细胞可以将事件发送给它的邻居。 因此,一百万队列,每一个消费者和8吨左右的生产商。
成本是目前关注的问题,因为我资助的实验自己。 (因此亚马逊的SQS可能是遥不可及的。)
从你的描述,它看起来像OMG的数据分发服务可能是一个不错的选择。 它关系到消息队列技术,但我宁愿把它称为分布式数据管理基础设施。 它是完全分布式的,并支持先进的功能,给你很多控制权的数据是如何分布的,通过一组丰富的服务质量设置的手段。
不知道很多关于你的问题,我可以猜测的方法可能是什么。 DDS是有关分发的强类型数据项的状态下,与类型的属性结构。 您可以创建一个数据类型描述的自动机的状态。 它的一个属性可以是唯一地识别在系统中的自动机的ID。 如果可能的话,将根据方案使得每个自动知道其邻国的ID是(如果存在的话)进行分配。 每个自动机将发布它的状态根据需要,产生含有所有自动机的当前状态的分布式数据空间。 DDS支持所谓的数据空间的划分。 如果你利用了这一点,那么在每一个你的机器节点将负责一个明确的所有自动机的子集。 在有线通信只发生于那些自动机附近有一个不同的分区。 由于自动机知道他们的邻居的ID的,他们将能够查询数据空间为它的兴趣在自动机的状态。
这是有点硬而不白板解释,但最终的结果将是一个单个实例(其是一种非常轻质的消息队列的)对于大多数自动机,并在边界那些自动机的两个或三个实例的分区。 如果你有十个节点一个万元自动机,则每个节点必须能够容纳管理大约十万自动机。 我所看到的系统正在建立与规模的DDS,大,几十每秒更新为每个实例的。 这种做法的好处是,这种技术与节点的数量扩展,所以你可以通过添加更多的节点搞垮每个节点的资源负载。
如果这是一个研究项目,那么你甚至可以使用商业产品不收费。 只是谷歌DDS的研究许可。