2

我有一个任务(我稍后会描述它),据我了解,Hazelcast 是它的最佳选择。但是它有这么多的功能和用途,所以我不明白到底该选择什么。

实际上任务是:
我有 Java 服务器应用程序 A 和 Java 服务器应用程序 B。我有几个 Java 服务器,其中一些持有 A 应用程序实例,其中一些持有 B 实例,一些持有两者。

我需要在所有服务器之间存储一张地图。A 和 B 都可以放入 map,B 可以按键读取 map。

所以我想我需要一个分布式地图,但我不明白我还需要什么其他功能?备份配置是什么?我是否需要分布式查询 B 才能按键查找?我需要一个“Hazelcast 客户端”吗?

4

2 回答 2

2

Hazelcast 是一个很棒的工具。同意看到你需要什么可能会让人望而生畏,但它比你想象的要简单:)

您首先需要运行一个或多个 Hazelcast 节点以使您的网格运行(建议 2 个或更多以提供冗余)。

如果服务器 A/B 具有嵌入式 hazelcast 节点,或者如果您在服务器 A/B 外部运行 hazelcast 网格并使用 HazelcastClient 与之对话,这取决于您。

您最适合评估此决定。通过将 hazelcast 网格节点嵌入服务器 A/B 开始可能更容易。如果您发现它不适合您,请运行单独的 hazelcast 网格并切换到在服务器 A/B 中使用 HazelcastClient。

您需要为网格配置一些端口以在其上运行,最常见的配置是 localhost:5701,以及从这里开始的增量端口(5702、5703 等)。

要分发您的数据,这非常容易 - 配置 hazelcast Map,为其命名,并设置备份计数(值 1 即可)。

我看不到您在这里需要分布式查询,因为IMap<K,V>应该可以让您访问所需的数据。

这有帮助吗?您还有其他具体问题吗?

Hazelcast 文档相当不错,并且还有一个活跃的用户社区。

祝你好运!

于 2013-05-21T08:16:40.817 回答
0

史蒂夫!非常感谢您的回答。最后在我的逻辑类中,我创建了一个单例来处理 Hazelcast 实例——比如

final static String DistributedMapName = "SystemUserActivityMap";
private static HazelcastInstance instance = Hazelcast.newHazelcastInstance();

我还创建了一个hazelcast.xml,非常简单

 <network>
            <port auto-increment="true">5701</port>
            <join>
                <multicast enabled="false">
                    <multicast-group>224.2.2.3</multicast-group>
                    <multicast-port>54327</multicast-port>
                </multicast>
                <tcp-ip enabled="true">
                    <interface>127.0.0.1</interface>
                </tcp-ip>
                <aws enabled="false">
                </aws>
            </join>
        </network>
    <map name="SystemUserActivityMap">...

起初一切似乎都很好,但后来我在 tomcat 错误日志消息中注意到 hazelcast 不时启动新端口,所以在启动后不久

Members [1] {
    Member [127.0.0.1]:5701 this
}

现在它

Members [9] {
    Member [127.0.0.1]:5701
    Member [127.0.0.1]:5702
    Member [127.0.0.1]:5703
    Member [127.0.0.1]:5704
    Member [127.0.0.1]:5705
    Member [127.0.0.1]:5706
    Member [127.0.0.1]:5707 this
    Member [127.0.0.1]:5708
    Member [127.0.0.1]:5709
}

并继续增长......我不明白为什么它在这台机器上使用所有这些端口

于 2013-05-22T12:24:35.833 回答