代码之家  ›  专栏  ›  技术社区  ›  selman

适用于多个Web应用程序的Hazelcast体系结构

  •  0
  • selman  · 技术社区  · 7 年前

    我在同一个tomcat实例中部署了15个web应用程序。大致相同的应用程序,但为不同的附属公司量身定制。我在两台不同的机器中有两个生产tomcat实例。无论如何,我想使用hazelcast作为集群内存网格。最好的方法是什么?

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

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

    于是又有了一个问题:做这件事的最佳方式是什么?

    2 回复  |  直到 7 年前
        1
  •  2
  •   11thdimension    7 年前

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

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

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

    如果您使用编程方式运行Hazelcast Hazelcast.newInstance 此文件(hazelcast.xml)必须位于类路径上。另一种更简单的方法是使用 start.bat or start.sh 在下面 bin hazelcast目录下载并修改那里的xml文件。

    如果你跑步 黑泽尔卡斯特。新实例 start.sh 在同一台机器上,它会多次为hazelcast创建与聚集在一起的不同成员一样多的进程。这仅用于实验,不用于生产。

    创建客户端使用 Hazelcast.newHazelcastClient 通过保持 hazelcast-client.xml 在类路径上。此xml文件将需要为中的服务器配置的成员地址 黑泽尔卡斯特。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 每个应用程序的实例。服务器将独立于应用程序运行。

        2
  •  2
  •   noctarius    7 年前