2017-05-18 26 views
1

几乎我们所有的应用程序都在嵌入拓扑中使用Hazelcast集群。 由于应用程序的高负载,我们偶尔会遇到内存和cpu问题。正因为如此,我们计划将我们的拓扑从嵌入式改为客户端/服务器模式。Hazelcast - 在客户机/服务器模式下为多个应用程序提供服务的最佳群集拓扑结构是什么?

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

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

回答

0

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

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

最佳实践

  • 保持HazelcastClient对象为单身,这样的连接会为每个请求,而不是创建多个客户端连接增加网络开销,这可能会影响性能的情况下重复使用。

  • 利用NearCache功能在任何适用的情况下,将频繁访问的数据缓存在客户端本身,而不是每次调用都跳到群集。

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

相关问题