vert.x在缩放方面存在事件总线的限制

时间:2017-12-11 00:46:33

标签: hazelcast vert.x

尝试了解EventBusVert.x的限制。

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

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

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

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

根据我的理解,事件总线(EB)在这里瓶颈?由于EB是一个"通信管"而且因为它对很多人来说是一个,我想它会开始收集所有发生事件的噪声(地址 - > service,pub-sub等),加上它在节点之间运行,是否会产生NET通信开销?我如何扩展EB?我应该关心它吗? (或Hazelcast群集应该处理所有这些?)

我是否应该考虑在群集模式下创建具有1个Vert.x实例的N个群集,并在100台机器上创建10个垂直群?

问:举一个简单的问题,在缩放方面是否有Event Bus的限制,我应该考虑使用N-bus创建基础架构,以确保我的系统正确缩放?

(尚未完成我的测试......)

1 个答案:

答案 0 :(得分:5)

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

  1. Vert.x在群集中注册的节点之间创建TCP连接
  2. 集群管理器跟踪EventBus消息处理程序(将EventBus地址映射到节点标识符的多图)
  3. 然后,如果您发送消息(指向点),Vert.x将从集群管理器中获取处理程序并使用TCP连接将其发送到远程节点。

    或者,如果您发布消息(发布/订阅),Vert.x会将消息发送到至少具有一个处理程序的所有节点(接收节点负责提供消息)消息给所有本地处理程序)。

    因此,群集的EventBus可伸缩性有两个“限制”:多图的大小(随着地址和处理程序的数量增长)和网络带宽。

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