新浪微博稳定性经验谈

1,064 views
880 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,064
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
13
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

新浪微博稳定性经验谈

  1. 1. 新浪微博稳定性经验谈 洪小军 @XiaoJunHong 邀请嘉宾:唐福林 @唐福林 新浪微博 @微博平台架构
  2. 2. 新浪微博稳定性经验谈 • 什么是稳定的系统? o 少出问题 o 快速解决 o 清楚系统健康状况趋势
  3. 3. 新浪微博稳定性经验谈 • 影响稳定性的因素 o 依赖的资源、服务异常 o 网络、硬件故障 o 流量突增 o 代码bug o 各种“坑” o …….
  4. 4. 新浪微博稳定性经验谈 存在不可避免的影响稳定性的因素, 但是又需要保证系统的稳定性,怎么做到?
  5. 5. 新浪微博稳定性经验谈 • 构建稳定的系统? o 少出问题:Design For Failure o 快速解决 o 清楚系统健康状况趋势
  6. 6. 新浪微博稳定性经验谈 • Design For Failure o 分层隔离(分离核心和非核心接口、服务化等) o SLA保证(资源、服务等各层面保证) o 保证代码质量(最佳设计模式、测试、Code Review) o 容灾设计(多IDC、多点部署) o 容量规划(保持一定富余) o 完善的监控报警机制(异常监测及其流量增长预警等) o 灰度发布 o ……
  7. 7. 新浪微博稳定性经验谈 • 分层隔离 – 分层模型 weibo.com weibo.cn api.weibo.com DNS 七层(Nginx、Varnish…) 应用层(Tomcat、Jetty…) 服务层 中间件 资源层(Cache、Storage…)
  8. 8. 新浪微博稳定性经验谈 • 分层隔离 – 隔离目标和原则  保证异常出现时影响范围可控 o 按主要接入方隔离 o 按业务隔离 o 按功能核心程度隔离
  9. 9. 新浪微博稳定性经验谈 • 分层隔离 – 隔离方式 o 物理隔离 | 逻辑隔离 o 读写隔离 DNS 七层 应用层 服务层|中间件 资源层 隔离成本 低 中 中 中 高
  10. 10. 新浪微博稳定性经验谈 • SLA保证 o 服务提供方:服务对外的SLA承诺 o 服务消费方:对依赖资源或服务的SLA要求
  11. 11. 新浪微博稳定性经验谈 • SLA保证 – 超时控制 o 依赖的资源或服务超时控制 o 异步调用超时控制
  12. 12. 新浪微博稳定性经验谈 • SLA保证 – 谨慎重试 o 异常场景下重试可能导致系统持续恶化 o 对于写入场景存在数据重入风险
  13. 13. 新浪微博稳定性经验谈 • SLA保证 – 容量规划 o 每季度至少一次例行性评估 o 重大活动前容量评估 o 监控系统黄色预警 o 日常30%以上冗余 o 资源或系统架构调整时需要重点关注
  14. 14. 新浪微博稳定性经验谈 • SLA保证 – Failover策略 o 服务降级:保核心功能 o 快速失败:保证不卡死 o 流量限制:保正常请求
  15. 15. 新浪微博稳定性经验谈 • SLA保证 o 超时控制 o 谨慎重试 o 容量规划 o Failover策略
  16. 16. 新浪微博稳定性经验谈 不能保证系统方方面面都能自动Failover, 但是又需要保证系统的稳定性,怎么做到?
  17. 17. 新浪微博稳定性经验谈 • 构建稳定的系统? o 少出问题:Design For Failure o 快速解决:容灾预案 o 清楚系统健康状况趋势
  18. 18. 新浪微博稳定性经验谈 • 容灾预案 o IDC容灾(切换到其它IDC) o 限流(拒绝超出或异常的请求) o 降级(降级有问题资源、保核心功能) o 紧急快速扩容 o ……
  19. 19. 新浪微博稳定性经验谈 • 所做这些都是有效的吗?是否有遗漏?  在测试环境下已经做了充分测试! o 线上呢?等待异常出现时来验证系统是否经得起考验? OR
  20. 20. 新浪微博稳定性经验谈 • 在线容灾演练 – Touchstone系统 o 确认碰撞时安全气囊是否开启(Design For Failure) o 事后有应对措施(容灾预案) 保证影响在 预期可控的 范围之内!
  21. 21. 新浪微博稳定性经验谈 • 构建稳定的系统? o 少出问题:Design For Failure o 快速解决:容灾预案 o 清楚系统健康状况趋势:在线容灾演练
  22. 22. 新浪微博稳定性经验谈 • Touchstone系统介绍 o 引流线上真实流量 o 异常场景搭建和模拟 o 容灾预案预演 o 验证系统运行稳定性状况 Resource Server Client
  23. 23. 新浪微博稳定性经验谈 • 引流线上真实流量 o 通过tcpcopy引流线上真实流量到演练服务器 图片来源:tcpcopy官方文档
  24. 24. 新浪微博稳定性经验谈 • 异常场景搭建和模拟 o 资源提供方搭建真实异常场景 o 使用linux tc模拟依赖资源和服务异常场景 o 接口字节码形式注入sleep代码模拟接口慢的场景 ResourceServerClient 123
  25. 25. 新浪微博稳定性经验谈 • 容灾预案预演 o 模拟异常的场景 o 运维人员做相应预案操作 o 验证系统运行稳定性状况
  26. 26. 新浪微博稳定性经验谈 • 怎么判断系统是稳定的? o 接口层面 o 分析返回码中4xx、5xx等比例 o 响应时间是否在正常范围内 o 是否满足SLA要求 o 返回包大小(辅助手段) o 日志分析(辅助手段) o …… o 最终用户层面 o 前端页面展示
  27. 27. 新浪微博稳定性经验谈 • Touchstone系统 – 实时数据展示
  28. 28. 新浪微博稳定性经验谈 • Touchstone系统 – 报表输出
  29. 29. 新浪微博稳定性经验谈 通过输出的异常数据,怎么分析系统问题点?
  30. 30. 新浪微博稳定性经验谈 • 异常影响程度叠加放大 o 描述:某组资源延迟400ms,但是接口整体持续延迟2s 串行化操作?
  31. 31. 新浪微博稳定性经验谈 • 功能相关的接口同时受到影响 o 描述:某资源异常,依赖此资源的功能都受较大影响 o 依赖性的影响! o 思考: o 分层隔离中被隔离开的功能是否受到影响? o 是否存在非核心资源影响核心功能的情况? o 期望的SLA保证是否都生效?
  32. 32. 新浪微博稳定性经验谈 • 大范围大量接口受到影响 o 描述:某资源异常时,tomcat中大量接口出现503 o 系统过载? o 容器保护策略失效?
  33. 33. 新浪微博稳定性经验谈 • 某个接口的所有请求都受到影响 o 描述:某个存储节点异常,依赖此存储的接口全部受到 影响 o 资源单点部署?只有一套slave?
  34. 34. 新浪微博稳定性经验谈 • 稳定性演练系统输出 o 系统稳定性状况 o 系统优化改进建议 o 切实有效的处理预案
  35. 35. 新浪微博稳定性经验谈 • 保证系统一直处于稳定状态 o 新系统上线和重大改造前先进行稳定性测试 o 周期性的演练测试
  36. 36. 新浪微博稳定性经验谈 • 在线演练一些注意事项 o 避免copy上行接口流量导致写请求被多次处理 o 避免写花缓存数据 o 避免对后端造成很大压力 o 尽量选择在低峰和有工程师在场的时间段进行演练 o 完善的监控报警机制

×