Hazelcast 光簇垂直x

Hazelcast 光簇垂直x,hazelcast,vert.x,Hazelcast,Vert.x,我们有许多不同的vertx实例,它们通过Hazelcast上的集群事件总线相互通信。这个盒子很好用 但似乎vertx的实现对我们来说是开销。Hazelcast显著增加了每个实例的消耗内存和启动时间。 此外,我们不使用任何内存存储,也不使用任何异步映射和HA功能 是否可以在影响最小的情况下进行Vertex间通信?有什么解决办法吗 UPD。更多详细信息 我尝试了vert.xV3.3.3和v3.4.0,它们都使用hazelcast v3.6.3。 我还尝试了更新版本的hazelcast和3.4 ver

我们有许多不同的vertx实例,它们通过Hazelcast上的集群事件总线相互通信。这个盒子很好用

但似乎vertx的实现对我们来说是开销。Hazelcast显著增加了每个实例的消耗内存和启动时间。 此外,我们不使用任何内存存储,也不使用任何异步映射和HA功能

是否可以在影响最小的情况下进行Vertex间通信?有什么解决办法吗

UPD。更多详细信息

我尝试了vert.xV3.3.3和v3.4.0,它们都使用hazelcast v3.6.3。 我还尝试了更新版本的hazelcast和3.4 vert.x

为了进行比较,我运行了zookeeper和vert.x的一个实例

我总共收集了一些初始化阶段的统计数据。 对我来说,连接到集群的时间更重要。我还注意到hazelcast在开始时加载了很多com.hazelcast*类(约占项目中加载类的一半)

我使用了Ubuntu x64和java8.121


PS:我重复一遍,我只谈到初始阶段。

您在测量中发现的差异是由于vertx hazelcast和vertx zookeeper群集管理器的工作方式存在根本性差异:

  • 使用vertx zookeeper时,您的vert.x实例会启动一个Apache Curator客户端[1],该客户端连接到现有的zookeeper集群:zookeeper集群本身在其他JVM上单独运行
  • 使用hazelcast群集管理器运行vert.x时,群集管理器会启动一个嵌入在同一JVM中的hazelcast成员:您没有连接到单独的hazelcast群集,而是在与vert.x实例相同的JVM中运行完整的群集成员
这至少可以解释您注意到的加载类数量的差异。也就是说,您可以启动一个单独的Hazelcast实例,并将集群管理器配置为启动一个lite成员[2]。Hazelcast lite成员不存储任何数据,因此在加载类方面可能会更轻,在运行时肯定会更轻,因为它不参与共享数据管理,而是充当集群数据结构的客户端

就连接时间而言,根据您使用的是多播、TCP/IP还是其他群集发现方法,结果可能会有所不同。请参阅[3]中有关备用群集发现配置选项的详细信息

[1]

[2]


[3]

您能否分享模式详细信息,如产品版本(vertx和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        | —          |