vert.x 事件总线在缩放方面是否有限制

vert.x is there a limit of Event Bus in terms of scaling

试图了解 EventBusVert.x 中的限制。

集群模式 中有 Vert.x 个 运行 实例,因此在多个物理机器上有多个 Verticles 运行。假设我们有 2 台机器,每台机器有 10 个 Verticle。

所以,在数字上: 1 Vert.x 个集群模式实例 20 个 Verticles 实例(每台机器 10 个) 2台机器, 1 Event Bus

每秒 1000 000 个连接到达事件总线,并处理回 Verticles。

如果 2 台机器不够我仍然可以得到 100 台机器,但是:

据我了解,事件总线 (EB) 是 瓶颈 吗?由于 EB 是一个 "communication tube" 并且因为它对许多人来说是 一个,我想它将开始收集所有即将发生的事件的所有 噪音到它(地址 -> 服务,pub-sub 等),再加上它在节点之间运行,它会产生 NET 通信开销吗?如何扩展 EB?我应该关心它吗? (或者 Hazelcast 集群应该处理所有这些?)

我是否应该考虑在集群模式下在 100 台机器上使用 10 个 Verticle 创建 N 个集群,其中包含 1 个 Vert.x 实例?

问: 简单问一下,Event Bus 在扩展方面是否有限制,我是否应该考虑使用 N 总线创建基础设施以确保我的系统是否正确缩放?

(还没有完成我的测试..)

当您使用集群 EventBus 时,会发生两件事:

  1. Vert.x 在集群中注册的节点之间创建 TCP 连接
  2. 集群管理器跟踪 EventBus 消息处理程序(将 EventBus 地址映射到节点标识符的多重映射)

然后,如果您发送一条消息(点对点),Vert.x将从集群管理器中获取一个处理程序并使用 TCP 连接发送它到远程节点。

或者,如果您发布 一条消息 (publish/subscribe),Vert.x 会将消息发送到至少有一个处理程序的所有节点(它是接收节点负责将消息传递给所有本地处理程序)。

因此,集群 EventBus 的可扩展性有两个 "limits":多图的大小(随着地址和处理程序的数量而增长)和网络带宽。

当然,如果不进行测试就无法确定,但在现代硬件和良好的网络上,您应该能够使用固定数量的地址部署 100 个节点的集群。