Please enable JavaScript.
Coggle requires JavaScript to display documents.
Google SRE (测试 (集成测试 (对配置文件也要进行测试, 建议使用格式化配置文件(比如yaml,json) …
Google SRE
测试
单元测试
集成测试
对配置文件也要进行测试
建议使用格式化配置文件(比如yaml,json)
脚本语言来编写配置文件有风险
系统测试
压力测试
金丝雀测试
错误等级 :question:
生产环境探针
:bird:
用python编写定时任务来进行
探针检查
:male-detective:
如果不正确则在sentry上发送一条消息
定期检查sentry上记录
方法论 :book:
减少琐事
如果太高,是否某些过程可以自动化?
不高于
50%
的时间处理琐事
定义服务质量目标
SLA
相当于合同,如果不满足可能导致财务损失
服务质量
协议
SLO
需要定义合理,否则会带来副作用
低了,用户不满意
高了,导致花费太多成本
服务质量
目标
SLI
度量
系统吞吐率
错误率
请求延迟
服务质量
指标
SRE层级模型
事故跟踪系统
合理的应急事件处理
分布式共识
本章难度高,涉及到
很多专业知识 :!:
raft
paxos
领头人选举
监控
黄金指标 :!:
延迟
流量
错误率
饱和度
合适的精度 :checkered_flag:
简化指标 :small_blue_diamond:
备份与恢复
人们想要的是恢复,而不是备份
SRE: 保障数据的完整性和可用性 :!!:
交付一个
恢复系统
,而不是备份系统 :recycle:
想想Gitlab的生产环境数据丢失灾难
确保数据恢复策略可以正常工作
备份数据是否完整
我们是否有足够的物理机资源
恢复是否在合理时间完成
是否在恢复过程中监控状态
是否依赖于某些无法控制元素
紧急事故
处理
编写
事故总结报告
:pencil2:
对事不对人
:martial_arts_uniform:
管理
要有一个
标准化事故处理流程
经常进行演练
作为生产环境
常规运维变更
错误预算 :explode:
明确某个服务的SLO,在此之外的时间用于支持错误预算
允许一定程度上的部署失败,本月的错误预算用完了后,停止升级
自动化
:robot_face:
简单化
复杂度
抗议意外复杂度
不断努力减少意外复杂度
代码
努力去除无用代码
负代码行
最小API
虽然现实中难以操作,也要尽量满足
负载均衡
简单轮询 :-1::skin-tone-2:
请求处理成本不同
服务器性能差异
无法预知性能因素
坏邻居
任务重启(Java)
最闲轮询 :-1::skin-tone-2:
活跃请求不一定消耗CPU
加权轮询
:+1:
防止过载
,优雅降级 :!:
截止时间
后端每个节点判断收到消息时
如果已经超过截止时间,则直接抛弃处理