当前位置: 首页 > news >正文

Near Cache

这段内容讲的是 Apache Ignite 中的 Near Cache(近缓存),以及它在 客户端节点(client nodes)服务端节点(server nodes) 上的使用方式和优势。我们可以从以下几个方面来理解:


一、什么是 Near Cache(近缓存)?

定义:

  • Near Cache 是一种 本地缓存(local cache),它存储在请求数据的节点上;
  • 用于缓存最近或最频繁访问的数据;
  • 通常用于 客户端节点,因为客户端节点本身不存储数据,每次查询都需要从服务端节点获取数据。

举例:

  • 假设你有一个客户端节点频繁查询“国家代码”;
  • 每次都从远程节点获取数据会带来网络延迟;
  • 使用 Near Cache 后,这些数据会被缓存在客户端本地,下次访问就直接从本地读取。

二、Near Cache 的特点

特性描述
本地缓存数据存储在发起请求的节点上(客户端或服务端)
仅缓存特定缓存的数据每个 Near Cache 只对应一个底层缓存
基于堆内缓存(on-heap)数据以 Java 对象形式存储在堆内存中
可配置最大容量和逐出策略支持 LRU、FIFO 等 eviction policies
事务一致性当服务端数据变化时,Near Cache 会自动更新或失效
继承主缓存配置如 expiry policy 等配置会继承自主缓存

三、如何配置 Near Cache?

你可以通过 XML 配置编程方式动态创建 Near Cache。

1. XML 配置方式(静态配置)

<bean class="org.apache.ignite.configuration.CacheConfiguration"><property name="name" value="myCache"/><property name="nearConfiguration"><bean class="org.apache.ignite.configuration.NearCacheConfiguration"><!-- 使用 LRU 逐出策略,最大缓存 100,000 条 --><property name="nearEvictionPolicyFactory"><bean class="org.apache.ignite.cache.eviction.lru.LruEvictionPolicyFactory"><property name="maxSize" value="100000"/></bean></property></bean></property>
</bean>

2. Java 代码动态创建(推荐用于客户端节点)

// 创建 Near Cache 配置
NearCacheConfiguration<Integer, String> nearCfg = new NearCacheConfiguration<>();// 设置 LRU 逐出策略,最大缓存 100,000 条
nearCfg.setNearEvictionPolicyFactory(new LruEvictionPolicyFactory<>(100_000));// 获取或创建 Near Cache(对应底层缓存 "myCache")
IgniteCache<Integer, String> cache = ignite.getOrCreateNearCache("myCache", nearCfg);// 从 Near Cache 获取数据
String value = cache.get(1);

四、Near Cache 的生命周期

  • Near Cache 是 按需创建 的:

    • 当某个节点第一次请求某个缓存的数据时,如果该缓存配置了 Near Cache,就会自动创建;
    • 如果是客户端节点,且没有配置 Near Cache,也可以通过 getOrCreateNearCache() 动态创建。
  • Near Cache 是 本地的

    • 它只存在于创建它的节点上;
    • 不会复制到其他节点;
    • 节点重启后 Near Cache 数据会丢失(除非你手动持久化)。

五、Near Cache 的配置参数(不继承主缓存)

参数描述默认值
nearEvictionPolicyNear Cache 的逐出策略(如 LRU、FIFO)无(不启用逐出)
nearStartSizeNear Cache 的初始容量(条目数)375,000

这些参数必须在 NearCacheConfiguration 中单独配置,不会从主缓存继承。


六、Near Cache 的适用场景

场景是否适合使用 Near Cache
客户端节点频繁读取缓存数据✅ 非常适合,减少网络延迟
缓存数据经常变化✅ Near Cache 支持自动更新/失效
缓存数据量大但访问热点集中✅ 可缓存热点数据,减少远程访问
服务端节点需要缓存数据✅ 可以使用,但更推荐使用堆内缓存(on-heap cache)
数据必须强一致性⚠️ Near Cache 有最终一致性,不适合强一致性场景

七、Near Cache 与堆内缓存的区别

对比项Near CacheOn-Heap Cache(堆内缓存)
存储位置客户端或服务端本地服务端堆内存
数据来源远程缓存的副本主缓存的本地副本
自动更新✅ 支持✅ 支持
一致性最终一致性最终一致性
用途客户端加速服务端加速
逐出策略可配置可配置
是否共享否(每个节点独立)是(服务端共享)

八、总结

  • Near Cache 是客户端节点提升缓存访问性能的重要机制
  • 它缓存的是远程缓存的“热点”数据;
  • 支持逐出策略、自动更新、事务一致性;
  • 可以静态配置(XML)或动态创建(Java API);
  • 适合用于频繁读取、低延迟、弱一致性要求的场景;
  • 不适合用于强一致性或大规模写入的场景。

如果你还有关于 Ignite 的缓存机制、事务一致性、缓存组(cache groups)、内存模型、性能调优等方面的问题,也欢迎继续提问!

http://www.lryc.cn/news/595193.html

相关文章:

  • 嵌入式学习-土堆目标检测(1)-day26
  • 低代码平台能否完全取代传统前端开发
  • Apache Ignite Binary Object 调优
  • OpenCV计算机视觉实战(16)——图像分割技术
  • 有关Maven的个人笔记总结
  • 【PTA数据结构 | C语言版】双连通分量
  • Spring Boot自动装配原理深度解析:从核心注解到实现机制
  • AWS IoT Core CloudWatch监控完整指南
  • AWS Certified Cloud Practitioner 认证考试 测试题与解析
  • HCL 三层知识总结
  • PyTorch 实现 CIFAR-10 图像分类:从数据预处理到模型训练与评估
  • RAG实战指南 Day 20:大规模向量索引优化技术
  • 轮状太空城的科学依据浅谈
  • Linux的目录
  • 在github上搭建自己主页
  • GLog编译提示fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突问题的解决
  • 《探索Go语言:云时代的编程新宠》
  • Electron 主进程与渲染进程之间交互方式
  • 文娱投资的逆势突破:博派资本的文化旅游综合体战略
  • rancher上使用rke在华为云多网卡的服务器上安装k8s集群问题处理了
  • 安全告警研判流程
  • OpenGL鼠标控制沿着指定轴旋转
  • STM32 开发的鼠标:技术详解与实现指南
  • 数据结构堆的实现(C语言)
  • Selenium 处理表单、弹窗与文件上传:从基础到实战
  • Ubuntu 22.04 安装 Jdk 8和 Tomcat (安装包形式)
  • Ubuntu 22 集群部署 Apache Doris 3.0.3 笔记
  • 前端图像视频实时检测
  • GitHub+Git新手使用说明
  • Flutter中 Provider 的基础用法超详细讲解(一)