我们有许多不同的vertx实例,它们通过上面的EventBus集群进行通信。这个盒子很好用。
但是,vertx的实现似乎是我们的开销。Hazelcast显著增加了每个实例的消耗内存和启动时间。另外,我们不使用任何内存存储,也不使用任何AsyncMaps和HA特性。
是否有可能以最小的影响进行交互通信?有什么解决办法吗?
UPD.更多细节
我尝试了vert.x v3.3.3和v3.4.0,它们都使用hazelcast v3.6.3。此外,我尝试了更新版本的hazelcast 3.4vert.x。
为了进行比较,我在此基础上运行了一个动物管理员实例和vert.x实例。
总之,我收集了一些初始化阶段的统计数据。对我来说,连接到集群的时间更重要。我还注意到,hazelcast在开始时加载了许多com.hazelcast*类(大约占项目中加载类的一半)。
| | hazelcast 3.6.3 | hazelcast 3.7.5 | Hazelcast 3.8 | Zookeeper 3.4.8 | No cluster |
|------------------------------|-----------------|-----------------|---------------|-----------------|------------|
| Loaded classes(init phase) | 2685 | 2703 | 3131 | 257 | 0 |
| Start of the 1st member(sec) | 2.3s±0.2 | 2.4±0.2 | 2.4s±0.2 | 1.0s±0.1 | 0.4 |
| Start of 2d/3d member(sec) | 4 | 4.5±0.2 | 4.5s±0.2 | 1.0s±0.1 | — |我使用了Ubuntu x64和java8.121
PS:我再说一遍,我只讲到init阶段。
发布于 2017-03-17 08:09:28
您在度量中注意到的差异是由于vertx-hazelcast和vertx-zoo门将群集管理器管理器工作方式的根本差异:
这至少应该解释您注意到的加载类数量的差异。尽管如此,您可以启动单独的Hazelcast实例并配置群集管理器来启动lite成员2。Hazelcast成员不存储任何数据,因此在加载类方面可能更轻,而且在运行时肯定更轻,因为它不参与共享数据管理,而是充当集群数据结构的客户端。
就连接时间而言,您的结果可能因使用多播、TCP/IP或其他群集发现方法而有所不同。请参阅3中有关替代群集发现配置选项的更多信息。
2
3
https://stackoverflow.com/questions/42714804
复制相似问题