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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容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
目录
相关文章
|
30天前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
26天前
|
消息中间件 SQL 中间件
大厂都在用的分布式事务方案,Seata+RocketMQ带你打破10万QPS瓶颈
分布式事务涉及跨多个数据库或服务的操作,确保数据一致性。本地事务通过数据库直接支持ACID特性,而分布式事务则需解决跨服务协调难、高并发压力及性能与一致性权衡等问题。常见的解决方案包括两阶段提交(2PC)、Seata提供的AT和TCC模式、以及基于消息队列的最终一致性方案。这些方法各有优劣,适用于不同业务场景,选择合适的方案需综合考虑业务需求、系统规模和技术团队能力。
182 7
|
1天前
|
存储 缓存 NoSQL
缓存加速新玩法,让你的应用飞起来
本文主要叙述如何运用云数据库 Tair 构建缓存,助力应用提速、优化性能。
|
1月前
|
缓存 NoSQL Java
Spring Boot中的分布式缓存方案
Spring Boot提供了简便的方式来集成和使用分布式缓存。通过Redis和Memcached等缓存方案,可以显著提升应用的性能和扩展性。合理配置和优化缓存策略,可以有效避免常见的缓存问题,保证系统的稳定性和高效运行。
47 3
|
2月前
|
NoSQL 安全 PHP
hyperf-wise-locksmith,一个高效的PHP分布式锁方案
`hyperf-wise-locksmith` 是 Hyperf 框架下的互斥锁库,支持文件锁、分布式锁、红锁及协程锁,有效防止分布式环境下的竞争条件。本文介绍了其安装、特性和应用场景,如在线支付系统的余额扣减,确保操作的原子性。
33 4
|
2月前
|
NoSQL 算法 关系型数据库
分布式 ID 详解 ( 5大分布式 ID 生成方案 )
本文详解分布式全局唯一ID及其5种实现方案,关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
分布式 ID 详解 ( 5大分布式 ID 生成方案 )
|
2月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
45 5
|
2月前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
3月前
|
存储 缓存 数据库
缓存技术有哪些应用场景呢
【10月更文挑战第19天】缓存技术有哪些应用场景呢
|
3月前
|
存储 缓存 NoSQL
分布式架构下 Session 共享的方案
【10月更文挑战第15天】在实际应用中,需要根据具体的业务需求、系统架构和性能要求等因素,选择合适的 Session 共享方案。同时,还需要不断地进行优化和调整,以确保系统的稳定性和可靠性。