我们在运行在Java servlet容器中的Web后端中使用Hazelcast(2.3)来在集群中分发数据。 Hazelcast映射使用MapStore接口保存在MySQL数据库中。现在,我们正在使用Java本机客户端界面,我想知道“本机”客户端和嵌入式版本在性能方面有什么区别。
“本机”客户端是否可以连接到任何群集节点并且每个请求都会再次做出此决定?
使用嵌入式版本时,是否可以避免通过本机客户端中的TCP套接字发送所有请求和响应的开销?
结论是嵌入式版本通常比“原生”客户端更快是否公平?
对于“本机”客户端:MapStore实现是Hazelcast服务器的一部分(在运行时作为类)是正确的吗?或者它是“本机”客户端的一部分,以便所有必须持久化的数据首先通过TCP套接字发送?
答案 0 :(得分:3)
您为本机客户端提供连接的节点集。一旦它连接一个,它将使用该节点与集群通信直到它死亡。当它死亡时,客户端将连接到其他节点以继续通信。
对于本机客户端,从客户端到节点有两个跃点,一个从节点到目标节点。 (目标节点是目标数据所在的节点)对于嵌入式客户端,存在单跳,因为它已经知道所需数据的位置(目标节点)
是的,但请参阅:(来自hazelcast documentation)
LiteMember是群集的成员,它具有套接字连接 集群中的每个成员,它知道数据的位置 更快地获取数据。但LiteMember有集群 开销,即使在相同的RAC上也必须位于同一数据中心。 但是,Native客户端不是成员,而是依赖于其中一个集群 成员。本机客户端可以位于LAN或WAN中的任何位置。它可以扩展 更好,开销更少。所以如果你的客户少了 比Hazelcast节点,LiteMember可以是一个选项;除此以外 绝对尝试Native Client。根据经验:尝试Native客户端 首先,如果它对你的表现不够好,那就考虑一下 LiteMember。
4-商店运营在hazelcast服务器中执行。从客户端发送的对象由目标节点持久保存到集中式数据存储区,目标节点也将对象存储在其内存中。