gpt4 book ai didi

java - 用于多个 Web 应用程序的 Hazelcast 架构

转载 作者:行者123 更新时间:2023-11-28 22:35:19 28 4
gpt4 key购买 nike

我在同一个 tomcat 实例中部署了 15 个 Web 应用程序。或多或少是相同的应用程序,但为不同的分支机构量身定制。我在两台单独的机器上有 2 个生产 tomcat 实例。无论如何,我想使用 hazelcast 作为集群内存网格。最好的方法是什么?

我不想点对点并为每个 tomcat 启动 15 个 hazelcast 实例。总共将创建 30 个实例。担心内存开销和管理困难。(或者这是正确的做法吗?)

另一种选择是,将 hazelcast jar 文件放在 tomcat/lin 文件夹下,并向我的 webapps 添加一个 contextStartListener 事件,这将在启动时启动 hazelcast 实例。但这意味着它将检查,如果没有创建,则创建一个 hazelcast 实例。将对所有 15 个 Web 应用程序进行此检查。这对我来说也不是最佳解决方案。它可能会引入并发问题,如果多个应用程序同时启动怎么办?

问题又来了:什么是最佳方式?

最佳答案

Hazelcast 位于内存数据网格 (IMDG) 中,充当数据结构的分布式存储。在某种程度上,它是一个数据库。您不需要为每个应用程序启动一个实例,一个就足够了。也就是说,为了使其具有容错性,您可以将多个节点聚集在一起。

例如,在您的两台服务器设置中,您可以利用服务器机器人启动一个 Hazelcast 实例并在单个集群中使用它们。集群是在 hazelcast.xml 中定义的成员节点列表,如下所示

<member-list>
<member>127.0.0.1</member>
<member>127.0.0.2</member>
</member-list>

如果您使用 Hazelcast.newInstance 以编程方式运行 Hazelcast,则此文件 (hazelcast.xml) 必须位于类路径中。其他更简单的方法是使用hazelcast下载的bin目录下的start.bat或start.sh,修改其中的xml文件。

如果您在同一台机器上多次运行 Hazelcast.newInstancestart.sh ,它将为 hazelcast 创建尽可能多的进程,作为聚集在一起的不同成员。这仅用于实验,不用于生产。

要创建客户端,请使用 Hazelcast.newHazelcastClient,方法是将 hazelcast-client.xml 保留在类路径中。此 xml 文件将需要为 hazelcast.xml 中的服务器配置的成员地址。

<cluster-members>
<address>127.0.0.1</address>
<address>127.0.0.2</address>
</cluster-members>

这是来自 Hazelcast 的完整客户端 XML 文件 https://github.com/hazelcast/hazelcast/blob/master/hazelcast-client/src/main/resources/hazelcast-client-full.xml

按照这里的步骤创建客户端

http://docs.hazelcast.org/docs/latest-development/manual/html/Hazelcast_Clients/Java_Client/Getting_Started.html

注意: 客户端将按应用程序创建,就像您将为每个应用程序创建数据库 Connection 实例一样。服务器将独立于应用程序运行。

关于java - 用于多个 Web 应用程序的 Hazelcast 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47474083/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com