Hazelcast - 在客户端/服务器模式下为多个应用程序提供服务的最佳集群拓扑是什么?

时间:2017-05-18 05:24:36

标签: java distributed-computing hazelcast

我们几乎所有应用程序都在嵌入式拓扑中使用Hazelcast集群。 由于应用程序的负载很高,我们偶尔会遇到内存和CPU问题。因此,我们计划将拓扑从嵌入式更改为客户端/服务器模式。

问题是,我们应该为每个应用程序设置一个新的集群吗?或者单个群集是否应该服务于所有客户端应用程序

我知道可以在jvm(http://docs.hazelcast.org/docs/3.5/manual/html/createclustergroups.html)中启动多个hazelcast实例。这也可以作为生产的选择吗?

1 个答案:

答案 0 :(得分:0)

让我们根据用例进行分析。

  • UseCase-1: Hazelcast群集主要用作分布式缓存。在这种情况下,您可以简单地保留一个公共集群,并且所有应用程序都可以维护HazelcastClient来访问集群。
  • UseCase-2: Hazelcast群集既用作分布式缓存,也用作使用执行程序的分布式计算目的。在这种情况下,您需要分析将在群集中存储的数据量以及将使用执行程序池运行的计算类型。在为多个服务器分配节点时,还必须考虑CPU /核心数量。

最佳做法

  • HazelcastClient个对象保留为单个,以便为每个请求重用连接,而不是创建多个客户端连接,从而增加可能影响性能的网络开销。

  • 在适用的情况下利用NearCache功能,在客户端本身缓存频繁访问的数据,而不是为每次呼叫转移到群集。

  • 最好在自己的JVM中启动每个节点,而不是在单个JVM中运行多个节点。父JVM中任何无法预料的问题都会导致所有节点崩溃。