• Like
大型系统的缓存标准化之路—从主从多级重client到一体化
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

大型系统的缓存标准化之路—从主从多级重client到一体化

  • 341 views
Published

在新浪微博平台技术开放日分享的议题

在新浪微博平台技术开放日分享的议题

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
341
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
16
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1.  新浪微博 洪小军  @XiaoJunHong @微博平台架构  大型系统的缓存标准化之路᠋᠌᠍᠎᠋᠌᠍᠎ —从主从多级重client到一体化 
  • 2. 大型系统的缓存标准化之路  •  大型系统面临的挑战 •  怎么应对每秒百万级资源调用? •  怎么保证99.99%的可用性? •  怎么保证核心请求响应时间在毫秒级?
  • 3. 大型系统的缓存标准化之路 
  • 4. 大型系统的缓存标准化之路 •  讨论大纲 ! 主从多级缓存 •  服务化和标准化
  • 5. 大型系统的缓存标准化之路  •  系统挑战 •  每秒对资源万级请求 •  需要保证较低的响应时间
  • 6. 大型系统的缓存标准化之路  •  分布式缓存 •  多节点部署 •  客户端上实现分布式 Client Master Cluster Memcached Memcached
  • 7. 大型系统的缓存标准化之路  •  系统挑战 •  服务器和网络可能会出现问题 •  后端数据库承受不了单个节点完全穿透的量 •  面临雪崩效应风险
  • 8. 大型系统的缓存标准化之路  •  Master/Slave机制 •  防单点:不容许节点故障时命中率受影响 •  成本问题:可考虑同城机房互为master/slave Client Master Cluster Slave Cluster
  • 9. 大型系统的缓存标准化之路  •  系统挑战 •  每秒对资源百万级请求 •  网络带宽、吞吐量成为瓶颈 •  存在访问量暴增可能性
  • 10. 大型系统的缓存标准化之路  •  L1 Cache •  在线线性扩容方案 •  满足业务快速发展需要 •  应对成倍访问量增加情况 Client Master Cluster Slave Cluster L1 Cluster
  • 11. 大型系统的缓存标准化之路  •  主从多级缓存 分布式   Master/Slave   L1  Cache  
  • 12. 大型系统的缓存标准化之路 •  讨论大纲 •  主从多级缓存 ! 服务化和标准化
  • 13. 大型系统的缓存标准化之路 •  重客户端开发模式 •  配置 •  实现 o  CacheClient client = build(); o  client.set("key", "test"); o  client.get("key");
  • 14. 大型系统的缓存标准化之路 •  面临的问题 – 开发层面 •  重客户端形式,主从多级缓存策略客户端实现 •  客户端存在多个版本,各业务使用不统一 •  工程师需很熟悉主从多级策略,自己把控可用性 •  曾经存在个别小业务有单点问题风险
  • 15. 大型系统的缓存标准化之路 •  配置变更上线流程 容量瓶颈/ 节点异常   通知开发 更改配置   测试/打包   系统发布 上线  
  • 16. 大型系统的缓存标准化之路 •  面临的问题 – 运维层面 •  运维变更成本高,变更周期长 •  运维把控系统容量能力有限 •  需开发配合,完整的变更流程太长
  • 17. 大型系统的缓存标准化之路 •  缓存服务化和标准化 •  Cache Service设计 •  面向服务开发 •  运维标准化
  • 18. 大型系统的缓存标准化之路 •  Cache Service整体设计
  • 19. 大型系统的缓存标准化之路 •  Cache Service部署结构
  • 20. 大型系统的缓存标准化之路 •  协议处理逻辑 •  get:l1 – master - slave  •  gets:master - slave o  master失败直接返回 •  add/cas:master – others o  master更新成功后修改命令为set,异步更新others •  set/replace/prepend/append:all L1 Cache Master Cache Slave Cache
  • 21. 大型系统的缓存标准化之路 •  分布式cache怎么解决强一致性问题 •  使用cas命令? •  分布式场景下cas会是怎么样? •  master宕机后会出现什么状况? •  cache service服务端 + 业务端处理 方案
  • 22. 大型系统的缓存标准化之路 •  容灾策略 •  快速失败策略:节点故障调用快速返回 o  server_failure_limit o  server_retry_timeout
  • 23. 大型系统的缓存标准化之路 •  面向服务开发 •  重客户端 -> 轻客户端 •  更好的多语言支持
  • 24. 大型系统的缓存标准化之路 •  重客户端开发模式 •  配置 •  实现 o  CacheClient client = build(); o  client.set("key", "test"); o  client.get("key");
  • 25. 大型系统的缓存标准化之路 •  面向服务开发 •  配置 o  <weibo:cs namespace="status-content" registry="vintage” /> •  实现 o  CacheClient client = build(); o  client.set("key", "aa"); o  client.get("key");
  • 26. 大型系统的缓存标准化之路 •  运维标准化 •  运维对资源有直接管控能力,变更秒级生效 o  通过配置服务变更,不需依赖开发及其代码上线 •  标准化的运维流程 o  节点故障处理、扩容缩容等操作标准化 •  可以做到更自动化的运维
  • 27. 大型系统的缓存标准化之路 •  提升运维管控能力 容量瓶颈/ 节点异常   通知开发 更改配置   测试/打包   系统发布 上线   容量瓶颈/ 节点异常   变更配置  
  • 28. 大型系统的缓存标准化之路 •  节点故障处理 •  替换为新的空节点,在线热缓存 •  不影响命中率     Slave   node1   node2   node3       Master   node1   Crash!   node3  Client  
  • 29. 大型系统的缓存标准化之路 •  内存容量扩容/缩容 •  添加L1 cache,在线预热,最终替换原有缓存     Slave   node1   node2   node3       Master   node1   node2   node3   Client       L1(new  master  or  slave)   node1   node2   node3   node4  
  • 30. 大型系统的缓存标准化之路 •  线性扩容 – 网络带宽、吞吐量 •  在线扩容L1 cache     Slave   node1   node2   node3       Master   node1   node2   node3   Client       L1   node1   node2   node3  
  • 31. 大型系统的缓存标准化之路 •  proxy扩容/缩容 •  无状态服务 •  直接在线扩容/缩容,不影响业务
  • 32. 谢谢