JCache 定义的两种主要缓存存储模式(Topology)
JCache(JSR-107)规范定义了 LOCAL 和分布式扩展(如 PARTITIONED/REPLICATED)两种主要的缓存存储模式。其中,PARTITIONED 和 REPLICATED 属于规范的可选扩展点,并非核心 API 强制要求。
JCache 缓存存储模式深度解析
一、核心拓扑模式:LOCAL 与分布式扩展
JSR-107 规范明确定义了两种主要的缓存存储模式(拓扑),体现了务实的分层设计哲学:
1.1 LOCAL 拓扑:标准强制实现
LOCAL 拓扑是 JCache 规范唯一强制要求所有实现必须支持的基础模式,代表单 JVM 进程内的缓存存储。
核心特征:
// LOCAL 拓扑的典型特征代码体现
public class LocalCacheCharacteristics {
// 数据存储在单个 JVM 堆内存中
private final Map<K, V> store = new ConcurrentHashMap<>();
// 无网络通信开销
public V get(K key) {
return store.get(key); // 纯粹的内存操作
}
// 强一致性保证(单 JVM 内)
public void put(K key, V value) {
store.put(key, value); // 立即对所有线程可见
}
// 故障边界明确
public void clear() {
store.clear(); // 数据完全在 JVM 生命周期内
}
}
设计哲学意义:
- 最低可行性保证:确保任何 JCache 实现至少能提供本地缓存功能
- 开发友好性:简化初期开发和测试,无需复杂基础设施
- 渐进式采用:允许应用从简单开始,随需求增长升级
1.2 PARTITIONED/REPLICATED:可选分布式扩展
这两种拓扑作为规范的可选扩展点,允许厂商实现分布式缓存能力:
// 分布式拓扑的配置通常通过厂商扩展 API
{
{
();
config.getCacheConfig()
.setBackupCount()
.setPartitionStrategy(PartitionStrategy.HASH);
}
{
();
builder.clustering().cacheMode(CacheMode.REPL_SYNC);
}
}


