SlideShare a Scribd company logo
1 of 27
缓存恢恢,疏而不漏 ——浅谈网站架构中缓存的应用 5173.com 朱晔 2010年6月
内容概要 缓存的基本知识 网站架构中缓存的分类 影响缓存命中率的因素 缓存常见的模式和实现 缓存的更新过期和清除策略 包裹着缓存纱布的数据库 缓存存储方式的选择 缓存的同步问题 缓存的颠簸问题 分布式缓存系统的需求 Memcache的基本介绍 Memcache的使用误区和实践 Windows Server AppFabric Caching
缓存的基本知识 缓存的由来 两种介质的速度不匹配(差距较大)的问题导致?高速方在和低速方交互的时候因等待速度趋近于低速方,并且闲置得不到有效利用。 存在第三种介质,速度介于两者之间, 价格介于两者之间。通过引入这种介质,把低速方部分内容保存在这个介质中,高速方大多情况下无须和低速方直接交互来提高整体性能。 典型的例子:CPU缓存(高速方CPU低速方内存),内存(高速方CPU低速方磁盘)。 缓存的分类 硬件领域中缓存(某种介质),软件领域中的缓存(不限于某种介质,只是一种手段),我们之后谈的缓存都是软件缓存。 读取缓存(解决读取速度慢),写入缓存(解决写入速度慢),读写缓存。 狭义上解决介质读写速度不匹配问题,广义上包括任何利用中间媒介提高速度的方法,包括空间换时间,动态操作变为静态操作。
缓存的基本知识 缓存(CACHE)和缓冲(BUFFER) 缓存:可以共享,多种数据,大小不固定,可以重复使用,已知数据,用于提高IO效率。 缓冲:不可以共享,单一数据,大小固定,读取后失效,命中100%,未知数据,用于减少IO次数。 缓存的属性 命中率:从缓存中返回正确数据的次数/总请求次数。 容量:超过这个值启用一定的策略:转移到磁盘;转移到远端;清空部分。 存储介质:内存、磁盘。 成本:开发成本、部署成本、硬件成本。 效率:SET效率、GET效率、序列化、哈希算法、分布式算法。 缓存的限制 由于价格的因素,缓存实现依赖的存储往往有大小限制——保存什么,舍弃什么,命中率。 缓存往往是从无到有的——在最初阶段不能发挥作用,在不命中的时候性能颠簸。
网站架构中缓存的分类 按照存储介质来分 内存(网站进程内、同服务器独立进程、独立服务器、分布式服务器组)。 磁盘(本地文件和数据库,独立服务器、分布式服务器组)。 缓存可以使用磁盘而不仅仅是内存。 按照存储的数据来分 直接用于输出的整页(HTML、脚本样式、图片)。 片段页(可供多个客户端使用的HTML、脚本样式等)。 索引和聚合数据(空间换时间)。 耗时查询的结果数据。 和业务相关的大块数据(列表数据,引用数据)。 和业务相关的小级数据(行级数据,资源数据)。 和上下文(用户)相关的数据(活动数据)。 按照实现方式来分 框架或引擎内置的缓存(比如ORM缓存和SQL SERVER缓存)。 安装特定的组件根据规则自动实现缓存(比如反向代理和输出缓存)。 需要由开发以编程方式实现的缓存(比如业务数据缓存)。 按照作用来分 用于数据的读取(之后介绍的大部分内容都是基于此类缓存) 用于(允许丢失)数据的写入——写到缓存的队列中,再由工作线程提交处理(写入存储)
影响缓存命中率的因素 假设数据库的访问操作需要5毫秒。 第一个测试固定Key的范围,第二个测试固定缓存时间。 ,[object Object]
对于相同的缓存时间,随着请求数的上升(时间的推移),缓存命中率保持稳定。
在相同的缓存时间下(2秒),缓存Key的跨度越大命中率越低,往往Key的范围很大预示着缓存的粒度太粗,Key所容纳的条件太多。,[object Object]
业务需求决定的时效性(体现在缓存的过期时间)。
硬件基础结构决定的容量(即使未过期都可能会删除LRU)。
软件架构设计决定的缓存的粒度
Key = 帖子ID; Value = 所有跟贴数据。
Key = 帖子ID; Value = 一条帖子的数据  以及 Key = 帖子ID; Value = 跟贴ID列表。
缓存的设计(包括替换策略等)
提高缓存命中率的方法
权衡业务、基础结构和架构设计。
预热、增加过期时间、增加存储容量、调整缓存项的键值算法、对热点问题的捕捉。
对于时效性很高(或缓存空间有限),内容跨度很大(或访问很随机),并且访问量不高的应用来说缓存命中率可能长期接近于0,预热后的缓存还没来得及为后人服务就已经冷却。,[object Object]
依靠用户的请求加载数据
一开始命中率低(可以通过预热提高命中率)
随着用户访问的增多命中率逐渐提高
随着缓存的过期命中率保持稳定
“冷门”的数据可能始终从数据库获取
适合分布式缓存预加载的缓存 ,[object Object]
一般缓存的(元)数据不太需要更新
大多采用主动更新
一般信任缓存的数据

More Related Content

Similar to 浅谈网站架构中缓存的应用

Cassandra架构与应用
Cassandra架构与应用Cassandra架构与应用
Cassandra架构与应用zhangzhaokun
 
十二項架構設計原則
十二項架構設計原則十二項架構設計原則
十二項架構設計原則Philip Zheng
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列XiaoJun Hong
 
海量日志分析系统实践,Dba
海量日志分析系统实践,Dba海量日志分析系统实践,Dba
海量日志分析系统实践,DbaCevin Cheung
 
Memcached vs redis
Memcached vs redisMemcached vs redis
Memcached vs redisqianshi
 
TSM6培训教程
TSM6培训教程TSM6培训教程
TSM6培训教程acqua young
 
大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路jeffz
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)Shanda innovation institute
 
虎扑基础设施架构探讨
虎扑基础设施架构探讨虎扑基础设施架构探讨
虎扑基础设施架构探讨hoopchina
 
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍mysqlops
 
分会场六数据中心使用Cfs & vcs 节省it成本
分会场六数据中心使用Cfs & vcs 节省it成本分会场六数据中心使用Cfs & vcs 节省it成本
分会场六数据中心使用Cfs & vcs 节省it成本ITband
 
Pegasus KV Storage, Let the Users focus on their work (2018/07)
Pegasus KV Storage, Let the Users focus on their work (2018/07)Pegasus KV Storage, Let the Users focus on their work (2018/07)
Pegasus KV Storage, Let the Users focus on their work (2018/07)涛 吴
 
Cache 20170407
Cache 20170407Cache 20170407
Cache 20170407Chin-Yu Ku
 
李战怀:大数据背景下分布式系统的数据一致性策略
李战怀:大数据背景下分布式系统的数据一致性策略李战怀:大数据背景下分布式系统的数据一致性策略
李战怀:大数据背景下分布式系统的数据一致性策略hdhappy001
 

Similar to 浅谈网站架构中缓存的应用 (20)

Cassandra架构与应用
Cassandra架构与应用Cassandra架构与应用
Cassandra架构与应用
 
十二項架構設計原則
十二項架構設計原則十二項架構設計原則
十二項架構設計原則
 
Java@taobao
Java@taobaoJava@taobao
Java@taobao
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
海量日志分析系统实践,Dba
海量日志分析系统实践,Dba海量日志分析系统实践,Dba
海量日志分析系统实践,Dba
 
Dfs ning
Dfs ningDfs ning
Dfs ning
 
Memcached vs redis
Memcached vs redisMemcached vs redis
Memcached vs redis
 
TSM6培训教程
TSM6培训教程TSM6培训教程
TSM6培训教程
 
大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
 
虎扑基础设施架构探讨
虎扑基础设施架构探讨虎扑基础设施架构探讨
虎扑基础设施架构探讨
 
众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍
 
分会场六数据中心使用Cfs & vcs 节省it成本
分会场六数据中心使用Cfs & vcs 节省it成本分会场六数据中心使用Cfs & vcs 节省it成本
分会场六数据中心使用Cfs & vcs 节省it成本
 
Pegasus KV Storage, Let the Users focus on their work (2018/07)
Pegasus KV Storage, Let the Users focus on their work (2018/07)Pegasus KV Storage, Let the Users focus on their work (2018/07)
Pegasus KV Storage, Let the Users focus on their work (2018/07)
 
Cache 20170407
Cache 20170407Cache 20170407
Cache 20170407
 
Metrics
MetricsMetrics
Metrics
 
Memlink
MemlinkMemlink
Memlink
 
Baidu Cloud Foundry
Baidu Cloud FoundryBaidu Cloud Foundry
Baidu Cloud Foundry
 
李战怀:大数据背景下分布式系统的数据一致性策略
李战怀:大数据背景下分布式系统的数据一致性策略李战怀:大数据背景下分布式系统的数据一致性策略
李战怀:大数据背景下分布式系统的数据一致性策略
 
【MMdc 分享】20120426 網站分析利器課程(Part1&2)
【MMdc 分享】20120426 網站分析利器課程(Part1&2)【MMdc 分享】20120426 網站分析利器課程(Part1&2)
【MMdc 分享】20120426 網站分析利器課程(Part1&2)
 

浅谈网站架构中缓存的应用