从Coherence迁移至Hazelcast:本地缓存等效实现咨询
Hazelcast中等效于Coherence本地缓存的高性能实现方案
嗨,刚好对这块比较熟,来给你唠唠Hazelcast里怎么实现和你用的Coherence本地缓存完全等效的方案,完全能满足你追求高性能的需求~
1. 直接对应组件:Hazelcast LocalMap
你在Coherence里用的<local-scheme>本地缓存,对应到Hazelcast里就是**LocalMap**。这是一个纯本地内存的缓存实现,完全不参与集群同步,和Coherence本地缓存一样,没有任何网络开销或集群协调成本,性能拉满。
2. 配置&使用方式(对应你的Coherence配置)
你之前的Coherence配置是把INFOHUB_PROGNOSE_DATENSATZ_LOCAL这个缓存绑定到default-local本地scheme,在Hazelcast里可以这样实现:
代码方式(以Java为例)
直接通过Hazelcast实例获取LocalMap就行,非常直观:
// 初始化Hazelcast实例(哪怕是集群环境,LocalMap也只在当前节点生效) HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(); // 创建/获取指定名称的本地缓存 Map<String, Object> localCache = hazelcastInstance.getLocalMap("INFOHUB_PROGNOSE_DATENSATZ_LOCAL");
配置文件方式(hazelcast.xml)
如果习惯用配置文件定义,你可以给这个缓存明确配置为本地行为(其实getLocalMap默认就是本地,这步是可选的,只是更贴合你原来的配置习惯):
<hazelcast> <map name="INFOHUB_PROGNOSE_DATENSATZ_LOCAL"> <!-- 禁用集群同步相关的配置,强制本地 --> <backup-count>0</backup-count> <!-- 不需要备份,本地缓存无集群同步 --> <in-memory-format>BINARY</in-memory-format> <!-- 和Coherence本地缓存的内存格式对齐 --> <!-- 无需配置分区迁移、集群监听等分布式属性 --> </map> </hazelcast>
3. 确保强制本地缓存的关键注意点
- 一定要用
getLocalMap()方法,而不是普通的getMap(),后者是分布式集群缓存,会有同步开销 LocalMap天然不参与任何集群操作,每个节点的缓存数据都是独立的,和Coherence本地缓存的行为完全一致- 哪怕你的Hazelcast是集群部署,
LocalMap的数据也不会在节点间同步,完全是本地独享的内存空间
4. 性能表现
LocalMap的性能和Coherence本地缓存几乎没有差别,因为都是纯本地内存操作,没有网络IO和集群协调的额外开销。你可以放心用它替代原来的Coherence本地缓存,获得相同的高性能体验。
内容的提问来源于stack exchange,提问作者GreenRover
相关产品推荐
相关产品推荐

