选择Hazelcast功能

时间:2013-05-21 07:24:42

标签: java hashmap distributed hazelcast

我有一项任务(我稍后会对此进行描述)据我所知,Hazelcast是最佳选择。但它有很多功能和用法,所以我无法理解究竟要选择什么。

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

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

所以我认为我需要一个分布式地图,但我无法理解我需要的其他功能是什么?什么是备份配置?我是否需要B的分布式查询才能按键查找?我需要“Hazelcast客户端”吗?

2 个答案:

答案 0 :(得分:2)

Hazelcast是一个很棒的工具。同意看到你需要的东西是令人生畏的,但它比你想象的要简单:)

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

如果服务器A / B嵌入了hazelcast节点,或者您在服务器A / B外部运行hazelcast网格并使用HazelcastClient与之通信,则由您决定。

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

您需要为网格配置一些端口以运行,最常见的配置是localhost:5701,以及此处的增量端口(5702,5703等)。

要分发您的数据,这很容易 - 配置一个淡褐色地图,给它一个名字,并设置备份计数(值为1就可以了)。

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

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

Hazelcast文档相当不错,还有一个活跃的用户社区。 祝你好运!

答案 1 :(得分: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
}

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