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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 聊聊分布式应用中的缓存方案(一)

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

【1】本地缓存

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

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


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

【2】分布式缓存

常见的有Redis、memcached。


二者具体对比如下:

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

对比如下:

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

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

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

缓存方式 数据总量 总响应时长(毫秒) 第一次响应(毫秒) 测试次数 平均响应时长
数据库中读取 50K 83 12 10 8.3ms
分布式缓存使用redis 50K 7 0.8 10 0.7ms
本地应用缓存使用Guava 50K 0.133 0.011 10 0.013ms
本地应用缓存直接使用map 50K 0.129 0.011 10 0.0129毫秒


【5】企业缓存常见方案

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

一级缓存+分布式缓存+数据库集群:


② 常见缓存架构

如下表所示:

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


数据库 Oracle MySQL 缓冲区 Buffer Pool 数据库缓存机制

什么是SpringCache?

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1月前
|
安全 大数据 Go
Go语言在分布式系统中的应用
【2月更文挑战第20天】Go语言,以其独特的语言特性和出色的性能,逐渐成为分布式系统开发领域的热门选择。本文将深入探讨Go语言在分布式系统中的应用,分析其优势及实际应用案例,旨在为开发人员提供有价值的参考与启示。
|
3月前
|
监控 NoSQL Linux
【分布式】Redis的持久化方案解析
【1月更文挑战第25天】【分布式】Redis的持久化方案解析
|
3月前
|
缓存 算法 NoSQL
【分布式详解】一致性算法、全局唯一ID、分布式锁、分布式事务、 分布式缓存、分布式任务、分布式会话
分布式系统通过副本控制协议,使得从系统外部读取系统内部各个副本的数据在一定的约束条件下相同,称之为副本一致性(consistency)。副本一致性是针对分布式系统而言的,不是针对某一个副本而言。强一致性(strong consistency):任何时刻任何用户或节点都可以读到最近一次成功更新的副本数据。强一致性是程度最高的一致性要求,也是实践中最难以实现的一致性。单调一致性(monotonic consistency):任何时刻,任何用户一旦读到某个数据在某次更新后的值,这个用户不会再读到比这个值更旧的值。
404 0
|
2月前
|
缓存 Java 数据库
优化您的Spring应用程序:缓存注解的精要指南
优化您的Spring应用程序:缓存注解的精要指南
45 0
|
2天前
|
缓存 NoSQL Java
SpringBoot实现缓存预热的几种常用方案
SpringBoot实现缓存预热的几种常用方案
|
29天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
52 0
|
29天前
|
canal 消息中间件 关系型数据库
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
79 0
|
29天前
|
缓存 应用服务中间件 数据库
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
【分布式技术专题】「缓存解决方案」一文带领你好好认识一下企业级别的缓存技术解决方案的运作原理和开发实战(多级缓存设计分析)
34 1
|
1月前
|
存储 缓存 算法
说说什么是本地缓存、分布式缓存以及多级缓存,它们各自的优缺点?
说说什么是本地缓存、分布式缓存以及多级缓存,它们各自的优缺点?
|
2月前
|
存储 算法 NoSQL
全网最全的分布式ID生成方案解析
全网最全的分布式ID生成方案解析
105 0

热门文章

最新文章