【发布时间】:2015-04-18 17:29:18
【问题描述】:
假设我有 100 台物理服务器。他们每个人都运行一个java进程。我们有一个全局 rabbitMQ 队列。该队列在所有 100 个进程之间共享。换句话说,我需要 100 个 JVM 中的每一个都监听这个全局队列。 第一个问题是可以做到吗? 第二个问题是如果可能的话,如何将消息从全局队列分派到 100 个节点,并确保负载按比例分配,这样我们就不会出现一个节点加载到 100%,其他 99 个到0.0005%。
每个节点都有最小和最大容量。所以理想情况下,一个 JVM 应该询问队列它有多少项目。然后抓取所需数量的物品,直到它的最大容量。上面提到的 100 个中的每个 JVM 都应该这样做。那么如何同步队列呢?它如何让某些机器上的 spring amqp 知道该项目已准备好进行处理?如何平衡负载?谢谢
【问题讨论】: