尝试了解EventBus
中Vert.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创建基础架构,以确保我的系统正确缩放?
(尚未完成我的测试......)
答案 0 :(得分:5)
当您使用群集的EventBus时,会发生两件事:
然后,如果您发送消息(指向点),Vert.x将从集群管理器中获取处理程序并使用TCP连接将其发送到远程节点。
或者,如果您发布消息(发布/订阅),Vert.x会将消息发送到至少具有一个处理程序的所有节点(接收节点负责提供消息)消息给所有本地处理程序)。
因此,群集的EventBus可伸缩性有两个“限制”:多图的大小(随着地址和处理程序的数量增长)和网络带宽。
当然,如果没有测试就无法确定,但在现代硬件和体面的网络上,您应该能够使用固定数量的地址部署100个节点集群。