我正在尝试让 Hazelcast 与 Hibernate 一起工作,但除非我使用该super_client选项,否则它不会启动。
根据文档,只有当您的应用程序位于同一个 RAC 或数据中心时,才应使用超级客户端。对于本地,情况就是这样,对于生产,它们肯定会分开,因此 Native Client 是唯一适合我们的选择。
超级客户端是集群的成员,它与集群中的每个成员都有套接字连接,并且知道数据在哪里,因此可以更快地获取数据。但是超级客户端有集群开销,它必须在同一个数据中心,即使在同一个 RAC 上。但是,本机客户端不是成员,而是依赖于集群成员之一。本机客户端可以位于 LAN 或 WAN 中的任何位置。它的扩展性更好,开销也更少。因此,如果您的客户端少于 Hazelcast 节点,则可以选择超级客户端;否则一定要尝试 Native Client。经验法则:首先尝试使用 Native 客户端,如果它对您来说性能不够好,则考虑使用超级客户端。
启动 Hazelcast 的最佳选择似乎是使用 Docker:
docker pull hazelcast/hazelcast:3.10.4
docker run --name=hazelcast -d=true -p 5701:5701 hazelcast/hazelcast:3.10.4
这就是它启动并运行后的样子,我仔细检查了 Hazelcast 端口 5701 是否已暴露,这显然是公开的。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
77a5a0bed5eb hazelcast/hazelcast:3.10.4 "bash -c 'set -euo p…" 3 days ago Up 6 hours 0.0.0.0:5701->5701/tcp hazelcast
docker hub 文档还提到了如何传入 JAVA_OPTS,我不确定这是必需的还是可选的以及它的目的是什么,但这并没有帮助我启动和运行:
-e JAVA_OPTS="-Dhazelcast.local.publicAddress=127.0.0.1:5701"
telnet 127.0.0.1 5701成功连接到localhost:5701,所以我知道端口是开放的。docker 文档没有提到这个正在运行的 Hazelcast 实例的默认密码是什么,我的假设是它是空的,或者密码是dev-pass在几个较旧的教程中提到的。
我正在使用休眠 5.2.13.Final
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
<exclusions>
<exclusion>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
</exclusion>
<exclusion>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
</exclusion>
</exclusions>
幕布斯6054654
30秒到达战场
相关分类