Your SlideShare is downloading. ×
0
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
新浪微博稳定性经验谈
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

新浪微博稳定性经验谈

680

Published on

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

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

×