Suche senden
Hochladen
分布式系统缓存设计
•
2 gefällt mir
•
2,161 views
Z
zhujiadun
Folgen
right by 朋春
Weniger lesen
Mehr lesen
Design
Melden
Teilen
Melden
Teilen
1 von 24
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Openstack swift, how does it work?
Openstack swift, how does it work?
kao kuo-tung
Windbg入门
Windbg入门
晓锋 陈
Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012
Mu-Fan Teng
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
Jackson Tian
Infiniflash benchmark
Infiniflash benchmark
Louis liu
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术团队
Ceph in UnitedStack
Ceph in UnitedStack
Rongze Zhu
美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践
美团点评技术团队
Empfohlen
Openstack swift, how does it work?
Openstack swift, how does it work?
kao kuo-tung
Windbg入门
Windbg入门
晓锋 陈
Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012
Mu-Fan Teng
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
Jackson Tian
Infiniflash benchmark
Infiniflash benchmark
Louis liu
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术团队
Ceph in UnitedStack
Ceph in UnitedStack
Rongze Zhu
美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践
美团点评技术团队
深入Docker的资源管理
深入Docker的资源管理
SpeedyCloud
云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现
july19850903
微博实时搜索
微博实时搜索
亚军 汪
Apache Zookeeper 分布式服务框架
Apache Zookeeper 分布式服务框架
Cabin WJ
Redis 常见使用模式分析
Redis 常见使用模式分析
vincent253
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
maclean liu
Redis介绍
Redis介绍
zhaolinjnu
Java多线程设计模式
Java多线程设计模式
Tony Deng
Effective linux.2.(tools)
Effective linux.2.(tools)
wang hongjiang
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
OpenSourceCamp
Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出
wang hongjiang
realtime-twitter-search
realtime-twitter-search
亚军 汪
Monitor is all for ops
Monitor is all for ops
琛琳 饶
Golang 高性能实战
Golang 高性能实战
rfyiamcool
淘宝主备数据库自动切换
淘宝主备数据库自动切换
mysqlops
使用 Spark 計算 differential expression
使用 Spark 計算 differential expression
Drake Huang
DNS协议与应用简介
DNS协议与应用简介
琛琳 饶
Docker進階探討
Docker進階探討
國昭 張
主库自动切换 V2.0
主库自动切换 V2.0
jinqing zhu
Times Ten Training
Times Ten Training
Li Chen
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
孙立
Cassandra简介.ppt
Cassandra简介.ppt
james tong
Weitere ähnliche Inhalte
Was ist angesagt?
深入Docker的资源管理
深入Docker的资源管理
SpeedyCloud
云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现
july19850903
微博实时搜索
微博实时搜索
亚军 汪
Apache Zookeeper 分布式服务框架
Apache Zookeeper 分布式服务框架
Cabin WJ
Redis 常见使用模式分析
Redis 常见使用模式分析
vincent253
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
maclean liu
Redis介绍
Redis介绍
zhaolinjnu
Java多线程设计模式
Java多线程设计模式
Tony Deng
Effective linux.2.(tools)
Effective linux.2.(tools)
wang hongjiang
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
OpenSourceCamp
Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出
wang hongjiang
realtime-twitter-search
realtime-twitter-search
亚军 汪
Monitor is all for ops
Monitor is all for ops
琛琳 饶
Golang 高性能实战
Golang 高性能实战
rfyiamcool
淘宝主备数据库自动切换
淘宝主备数据库自动切换
mysqlops
使用 Spark 計算 differential expression
使用 Spark 計算 differential expression
Drake Huang
DNS协议与应用简介
DNS协议与应用简介
琛琳 饶
Docker進階探討
Docker進階探討
國昭 張
主库自动切换 V2.0
主库自动切换 V2.0
jinqing zhu
Was ist angesagt?
(19)
深入Docker的资源管理
深入Docker的资源管理
云计算环境中Ssd在cassandra测试的性能表现
云计算环境中Ssd在cassandra测试的性能表现
微博实时搜索
微博实时搜索
Apache Zookeeper 分布式服务框架
Apache Zookeeper 分布式服务框架
Redis 常见使用模式分析
Redis 常见使用模式分析
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
Redis介绍
Redis介绍
Java多线程设计模式
Java多线程设计模式
Effective linux.2.(tools)
Effective linux.2.(tools)
Osc scott linux下的数据库优化for_postgresql
Osc scott linux下的数据库优化for_postgresql
Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出
realtime-twitter-search
realtime-twitter-search
Monitor is all for ops
Monitor is all for ops
Golang 高性能实战
Golang 高性能实战
淘宝主备数据库自动切换
淘宝主备数据库自动切换
使用 Spark 計算 differential expression
使用 Spark 計算 differential expression
DNS协议与应用简介
DNS协议与应用简介
Docker進階探討
Docker進階探討
主库自动切换 V2.0
主库自动切换 V2.0
Ähnlich wie 分布式系统缓存设计
Times Ten Training
Times Ten Training
Li Chen
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
孙立
Cassandra简介.ppt
Cassandra简介.ppt
james tong
Win dbg入门
Win dbg入门
晓锋 陈
Hacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
Sky Jian
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
maclean liu
优酷 Web网站架构案例分析
优酷 Web网站架构案例分析
George Ang
Key value store
Key value store
xuanhan863
Youku arch qcon2009_beijing
Youku arch qcon2009_beijing
drewz lin
MySQL自动切换设计与实现
MySQL自动切换设计与实现
orczhou
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
Feng Yu
Nosql三步曲
Nosql三步曲
84zhu
Tair
Tair
OpenSourceCamp
1, OCP - architecture intro
1, OCP - architecture intro
ted-xu
Split lock
Split lock
yang peng
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
Linux内存管理
Linux内存管理
zijia
淘宝数据魔方的系统架构 -长林
淘宝数据魔方的系统架构 -长林
Shaoning Pan
Linux内存管理
Linux内存管理
zijia
Ähnlich wie 分布式系统缓存设计
(20)
Times Ten Training
Times Ten Training
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
Cassandra简介.ppt
Cassandra简介.ppt
Win dbg入门
Win dbg入门
Hacking Nginx at Taobao
Hacking Nginx at Taobao
基于MySQL开放复制协议的同步扩展
基于MySQL开放复制协议的同步扩展
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
优酷 Web网站架构案例分析
优酷 Web网站架构案例分析
Key value store
Key value store
Youku arch qcon2009_beijing
Youku arch qcon2009_beijing
MySQL自动切换设计与实现
MySQL自动切换设计与实现
淘宝商品库MySQL优化实践
淘宝商品库MySQL优化实践
Nosql三步曲
Nosql三步曲
Tair
Tair
1, OCP - architecture intro
1, OCP - architecture intro
Split lock
Split lock
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
Linux内存管理
Linux内存管理
淘宝数据魔方的系统架构 -长林
淘宝数据魔方的系统架构 -长林
Linux内存管理
Linux内存管理
分布式系统缓存设计
1.
分布式系统 缓存设计浅析
朋春 pengchun@taobao.com
2.
为什么要做这个分享?
3.
缓存系统(2011.6)
前端产品 glider ⼀一级缓存 二级缓存
4.
缓存系统(2011.6) URL请求,nocache?
前端产品 nocache? glider ⼀一级缓存 nocache? 二级缓存
5.
缓存系统(2011.6) URL请求,nocache?
data 前端产品 nocache? glider ⼀一级缓存 nocache? 二级缓存
6.
缓存系统(2011.6) URL请求,nocache?
data etag, http header 前端产品 nocache? ttl, http header glider ⼀一级缓存 nocache? min (ttl) 二级缓存
7.
时代变了 • 容灾考虑,缓存多实例,多写单读 • 实时的数据更新 •
更多更复杂的底层系统
8.
缓存系统的三个问题 • 数据⼀一致性问题 • 缓存雪崩问题 •
缓存穿透问题
9.
数据⼀一致性 • 缓存与底层数据的⼀一致性 • 有继承关系的缓存之间的⼀一致性 •
多个缓存副本之间的⼀一致性
10.
缓存数据的淘汰 • “预估”失效时间 • 单调递增的数据版本号 •
提供清理接口
11.
精细化管理 • 只淘汰该淘汰的
12.
itier的设计(通用) • 根据tag进行缓存管理 • 时间戳做数据版本号 •
提供清理API • 版本号共享协作
13.
var me =
Cache.create(...); me.set(key, value, ttl, tags); me.get(key); me.tagrm(tag, offset, flush);
14.
缓存的数据结构 var data =
{ ‘i’:now, /** 数据写入时间戳 */ ‘e’:now + ttl,/** 预期过期时间 */ ‘k’:key, /** 原始key */ ‘v’:value, /** 原始值 */ ‘t’:tags /** tag列表 */ };
15.
tagrm (cleanByTag) /** *
@定时同步 */ var __taginfo = {}; tagrm (tag, offset, flush) { __taginfo[tag] = now() + offset; // flush to zookeepr or mysql ... }
16.
itier中的tag定义 • __global__ • 数据来源driver名字 •
SQL中的表名
17.
⼀一致性目标 • 缓存的tag信息⼀一路继承,取并集 • 缓存的ttl信息⼀一路继承,取最小值 •
秒量级保证⼀一致性
18.
但是, 简单的事情从来不简单
19.
case1:网络延迟
底层数据 get : a = 1 a=1 update : a = 2 a=2 tagrm: t1 set cache : a = 1
20.
case2:多机时差 • tagrm在机器1上调用,取机器1上的时间 • 写缓存在机器2上,取机器2上的时间 •
机器1和机器2在ms级别时间不同步
21.
case3:异步复制
实例1 a=1 update : a = 2 a=2 异步复制 有延迟 最终⼀一致性 get : a = 1 实例2 a=1
22.
tagrm (cleanByTag) /** *
@定时同步 */ var __taginfo = {}; tagrm (tag, offset, flush) { __taginfo[tag] = now() + offset; // flush to zookeepr or mysql ... }
23.
⼀一些基本理念 • 缓存永远是锦上添花的部分 • 保证不了⼀一致性就拉到吧 •
不要为了⼀一致性加锁,得不偿失 • 不要过度依赖缓存
24.
代码 • https://github.com/aleafs/node-shark/blob/
master/lib/cache.js • https://github.com/aleafs/node-shark/blob/ master/test/unit/CacheTest.js
Jetzt herunterladen