聊聊分布式应用中的缓存方案(一)

在高并发分布式应用中缓存从来都是必要的,而且从来都是综合应用本地缓存和分布式缓存提高性能的。

【1】本地缓存

本地缓存即缓存和应用在同一个进程里,是基于JVM的缓存,应用生则生,应用死则亡。

常见产品有Guava、Caffeine和Ehcache。三者对比如下:

对比项GuavaCaffeineEhcache
是否开源Y(Google)Y(apache)Y(Terracotta)
级别轻量轻量重量级
知名度Java开发者必备Spring5Hibernate
缓存算法LRUW-TinyLFULRU、LFU FIFO
JDK版本>=1.6>=1.8>=1.5
持久化支持不支持不支持支持(商业)
集群解决方案有(商业)
Spring Cache支持不支持支持支持
性能监控不带不带提供(JMX 页面)

【2】分布式缓存

常见的有Redis、memcached。关于二者相关知识参考博文:Redis/Memcache那些事

二者具体对比如下:
在这里插入图片描述


【3】本地缓存VS分布式缓存

对比如下:

对比项本地缓存分布式缓存
概念缓存和应用在同一个进程里,是基于JVM的缓存单独的组件与应用分离
社区成熟非常高非常高
性能很高 单机高 需要TCP协议交互
黏度紧耦合松耦合
适用环境单机单机/集群环境
高可用应用生则生,应用亡则亡集群抱团
应用共享不能共享可以共享

【4】本地缓存VS分布式缓存VS数据库

使用不同方案获取50K数据进行10次测试对比表格如下:

缓存方式数据总量总响应时长(毫秒)第一次响应(毫秒)测试次数平均响应时长
数据库中读取50K8312108.3ms
分布式缓存使用redis50K70.8100.7ms
本地应用缓存使用Guava50K0.1330.011100.013ms
本地应用缓存直接使用map50K0.1290.011100.0129毫秒

【5】企业缓存常见方案

① 大型互联网企业如何选择缓存

一级缓存+分布式缓存+数据库集群:
在这里插入图片描述

② 常见缓存架构

如下表所示:

层级常见产品缓存解决方案缓存技术
应用层浏览器浏览器缓存 本地缓存HTTP缓存协商 cookie sqlite websql
网络层网络路由CDNSquid等
负载层Nginx Apache 等动静分离 反向代理基于Http服务器
服务层Java应用 PHP应用动态页面静态化
应用缓存
分布式缓存
MyBatis缓存
freemarker velocity Thymeleaf
Ehcache Guava Caffeine
Redis Memcached
MyBatis一级二级缓存
数据库Oracle MySQL缓冲区 Buffer Pool数据库缓存机制

什么是SpringCache?

参考博文:
SpringBoot - Spring缓存默认配置与运行流程
SpringBoot - 缓存入门详解与注解使用实例

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

流烟默

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

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

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

打赏作者

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

抵扣说明:

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

余额充值