源码地址:L2Cache
L2Cache是什么
- L2Cache 是一个基于内存、 Redis 、 Spring Cache 实现的满足高并发场景下的分布式二级缓存框架。
L2Cache如何使用
- 如何使用 L2cache
L2Cache架构图
核心逻辑
- 1、发起 get(key) 请求
- 2、从localCache中get缓存,若存在则返回缓存,若不存在则从Redis中get缓存
- 3、若从Redis中get到缓存,则返回缓存并put到localCache中
- 4、若redis中不存在缓存,则执行load从数据源加载数据,并将数据put到localCache和Redis
- 5、发送refresh消息到MQ,其他节点订阅到消息,则refresh缓存
L2Cache底层原理图
模块介绍
- 业务层: 系统中实际的业务逻辑【也就是你的业务代码】
- 缓存层: 承载各种业务维度的缓存实现,简化开发和维护【最佳实践】
- 缓存构建模块: 用于构建各种类型的缓存对象
- 缓存容器: 作为一个容器,用来存储各种业务维度的缓存对象,以便复用【类spring容器】
- 缓存模块: 实际的缓存对象,分为混合缓存、一级缓存、二级缓存
- 热key探测模块: 用于探测热key,并缓存到本地缓存,提高性能
- 缓存同步模块: 用于保证分布式环境下,各个POD节点中本地缓存的一致性
L2Cache模块演进图
- 初始版本: 基于快速迭代的理念,优先实现核心功能并快速验证。
- 当前版本: 基于可拔插的设计理念,设计出具有高可扩展性和松耦合的代码体系,实现整个框架的模块化、可复用性和职责分离,让后续可能发生的变更更加容易、升级成本更低。
L2Cache缓存层
为什么有了L2Cache缓存框架这一层后,还定义了缓存层呢?
- 承上启下: 通过缓存层连接业务层和缓存框架。
- 标准化: 定义一套标准的业务缓存操作,降低系统复杂度,简化开发,便于维护和扩展。
缓存层的核心接口:CacheService
。小接口,大功能。
业务层
只需根据缓存层
实现的各种维度的CacheService
来组装复杂的业务逻辑即可。业务层
的难点在于缓存维度的划分。
最后,希望以上内容对你有些帮助,若有疑问,可以在此处 github - l2cache - issues 提交你的疑问。