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

Hazelcast Architecture For Multiple Web Apps

我在同一个 tomcat instance.More 中部署了 15 个 Web 应用程序,但为不同的应用程序量身定制 affiliates.I 在两个单独的 tomcat 中有 2 个生产实例机器。无论如何,我想使用 hazelcast 作为集群内存 grid.What 是最好的方法吗?

我不想点对点启动 15 个 hazelcast 实例,每个 tomcat.In 总共将产生 30 instances.Worried 内存开销和管理困难。(或者这是正确的做法?)

另一个选项是,将 hazelcast jar 文件放在 tomcat/lin 文件夹下,并向我的 webapps 添加一个 contextStartListener 事件,这将在 startup.But 上启动 hazelcast 实例,这意味着它将检查是否未创建,创建一个 hazelcast instance.This 将对所有 15 个网络进行检查 apps.This 看起来也不像是 me.It 的最佳解决方案可能会引入并发问题,如果多个应用程序同时启动怎么办时间?

因此问题 again:What 是最佳方法吗?

最佳方式是拥有一个独立的(单独的)Hazelcast 集群用于存储,并且您的应用程序(webapps)使用 Hazelcast 客户端代理到集群。

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

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

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

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

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

通过在 class 路径上保留 hazelcast-client.xml 来创建客户端使用 Hazelcast.newHazelcastClient。此 xml 文件将需要为 hazelcast.xml.

中的服务器配置的成员地址
<cluster-members>
    <address>127.0.0.1</address>
    <address>127.0.0.2</address>
</cluster-members>

这是来自 Hazelcast https://github.com/hazelcast/hazelcast/blob/master/hazelcast-client/src/main/resources/hazelcast-client-full.xml

的完整客户端 XML 文件

按照此处的步骤创建客户端

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

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