Java 选择Hazelcast特征
我有一个任务(我稍后再描述),据我所知,Hazelcast是最好的选择。但是它有这么多的特性和用法,所以我不知道到底要选什么 实际上,任务是:Java 选择Hazelcast特征,java,hashmap,distributed,hazelcast,Java,Hashmap,Distributed,Hazelcast,我有一个任务(我稍后再描述),据我所知,Hazelcast是最好的选择。但是它有这么多的特性和用法,所以我不知道到底要选什么 实际上,任务是: 我有Java服务器应用程序A和Java服务器应用程序B。我有几个Java服务器,其中一些持有应用程序实例,一些持有B实例,一些持有两者 我需要在所有服务器之间存储一个映射。A和B都可以放入地图,B可以通过按键读取地图 所以我想我需要一个分布式地图,但我不知道我还需要什么其他功能?什么是备份配置?B按键查找是否需要分布式查询?我需要“Hazelcast客户
我有Java服务器应用程序A和Java服务器应用程序B。我有几个Java服务器,其中一些持有应用程序实例,一些持有B实例,一些持有两者 我需要在所有服务器之间存储一个映射。A和B都可以放入地图,B可以通过按键读取地图
所以我想我需要一个分布式地图,但我不知道我还需要什么其他功能?什么是备份配置?B按键查找是否需要分布式查询?我需要“Hazelcast客户端”吗?Hazelcast是一个很好的工具。同意看到你需要什么会让人望而生畏,但这比你想象的要简单:) 您首先需要运行一个或多个Hazelcast节点来运行网格(建议使用2个或更多节点以提供冗余) 服务器A/B是否有嵌入式hazelcast节点,或者是否在服务器A/B外部运行hazelcast网格并使用hazelcast客户端与之对话,这取决于您 你最适合评估这个决定。在服务器a/B中嵌入hazelcast网格节点可能更容易开始。如果您发现它不适合您,请运行单独的hazelcast网格并切换到在服务器a/B中使用hazelcast客户端 您需要为网格配置一些要运行的端口,最常见的配置是localhost:5701,以及从这里开始的增量端口(5702、5703等) 要分发数据,这非常简单-配置hazelcast映射,给它一个名称,并设置备份计数(值为1就可以了) 我看不出您在这里需要分布式查询,因为
IMap
应该允许您访问所需的数据
这有用吗?你还有其他具体问题吗
Hazelcast文档相当不错,而且还有一个活跃的用户社区
祝你好运 史蒂夫!非常感谢你的回答。最后,在我的逻辑类中,我创建了一个singleton来处理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">...
现在是
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
}
继续成长。。。
我不明白为什么它会在这台机器上使用所有这些端口Mikhail,你是否多次将web应用部署到tomcat?您是否在tomcat manager中或通过autodeploy(或如何)取消部署和部署?我有一种感觉,当您取消部署并且hazelcast实例没有关闭时,可能会出现内存/线程泄漏。如果完全重新启动tomcat会发生什么?请对此进行测试并让我知道结果。关于节点与客户端的问题正是我想知道的。。。。答案——试试看……没错,看看什么最适合你的情况。如果您发现(比如)已经有3个稳定的JVM在运行,那么将Hazelcast实例嵌入其中可能是有意义的。否则,运行一个由{x}节点组成的外部网格并通过HazelcastClient与之对话是非常容易的。现在我倾向于后一种情况,但一开始我发现前一种情况更容易。
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
}