3.L2Cache 核心原理解析

源码地址:L2Cache

1、L2Cache是什么

  • L2Cache 是一个基于内存、 Redis 、 Spring Cache 实现的满足高并发场景下的分布式二级缓存框架。
  • L2Cache 并没有重复造轮子,它只是将目前市面上比较成熟、经得起考验的框架组合起来,封装屏蔽了复杂的缓存操作和实现原理,最终给开发者留出了一个简单易懂和易维护的分布式缓存开发工具。
  • 具体见: L2Cache 分布式二级缓存框架

2、L2Cache如何使用

3、L2Cache架构图

请添加图片描述
核心逻辑

  • 1、发起 get(key) 请求
  • 2、从localCache中get缓存,若存在则返回缓存,若不存在则从Redis中get缓存
  • 3、若从Redis中get到缓存,则返回缓存并put到localCache中
  • 4、若redis中不存在缓存,则执行load从数据源加载数据,并将数据put到localCache和Redis
  • 5、发送refresh消息到MQ,其他节点订阅到消息,则refresh缓存

4、L2Cache底层原理图

请添加图片描述
模块介绍

  • 业务层: 系统中实际的业务逻辑【也就是你的业务代码】
  • 缓存层: 承载各种业务维度的缓存实现,简化开发和维护【最佳实践】
  • 缓存构建模块: 用于构建各种类型的缓存对象
  • 缓存容器: 作为一个容器,用来存储各种业务维度的缓存对象,以便复用【类spring容器】
  • 缓存模块: 实际的缓存对象,分为混合缓存、一级缓存、二级缓存
  • 热key探测模块: 用于探测热key,并缓存到本地缓存,提高性能
  • 缓存同步模块: 用于保证分布式环境下,各个POD节点中本地缓存的一致性

5、L2Cache模块演进图

请添加图片描述

  • 初始版本: 基于快速迭代的理念,优先实现核心功能并快速验证。
  • 当前版本: 基于可拔插的设计理念,设计出具有高可扩展性和松耦合的代码体系,实现整个框架的模块化、可复用性和职责分离,让后续可能发生的变更更加容易、升级成本更低。

6、L2Cache缓存层

为什么有了L2Cache缓存框架这一层后,还定义了缓存层呢?

  1. 承上启下: 通过缓存层连接业务层和缓存框架。
  2. 标准化: 定义一套标准的业务缓存操作,降低系统复杂度,简化开发,便于维护和扩展。

缓存层的核心接口:CacheService 。小接口,大功能。
请添加图片描述

  • 业务层 只需根据 缓存层 实现的各种维度的CacheService 来组装复杂的业务逻辑即可。
  • 业务层 的难点在于缓存维度的划分

最后,希望以上内容对你有些帮助,若有疑问,可以在此处 github - l2cache - issues 提交你的疑问。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
L1/L2/L3 Cache是存储器子系统中的组成部分,用于存放程序经常使用的指令和数据。L1 Cache是CPU流水线和主存储器之间的第一级缓存L2 Cache是L1 Cache之上的第二级缓存,L3 CacheL2 Cache之上的第三级缓存。\[1\] 当CPU需要数据时,它首先搜索L1 Cache,如果未找到,则接下来搜索L2 Cache和L3 Cache。如果找到所需的数据,则称为缓存命中。如果数据不在缓存中,则CPU必须从主内存或存储加载数据到缓存中,这会导致延迟并对性能产生不利影响,这称为缓存未命中。\[2\] 除了L1/L2/L3 Cache之外,还有其他类型的Cache,如用于虚实地址转换的TLB、MOB、ROB、Register File和BTB等。这些Cache的作用是提高数据传输率和缓解访问延迟。\[1\] 总结来说,L1/L2/L3 Cache是存储器子系统中的缓存,用于存放CPU经常使用的指令和数据,以提高数据访问速度和系统性能。\[1\]\[2\] #### 引用[.reference_title] - *1* [什么是L1/L2/L3 Cache?](https://blog.csdn.net/wujianing_110117/article/details/119663604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [CPU缓存:L1、L2 和 L3 缓存之间的区别](https://blog.csdn.net/weixin_42238387/article/details/120576720)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白云coy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值