可用性和可靠性
- 可靠性:系统是否具备无差错执行预期操作的能力。指系统能够按照技术标准持续运行的能力。如果通过了全部测试,那么意味着它是可靠的;
- 可用性:为了执行这些操作,系统当前可运行的能力。指系统在其能力范围内执行任务的能力。是否运作正常,是否可以操作,是否可以响应。
提高可用性的五个要点:
- 时刻考虑应对故障:在设计期对可能发生的故障多做考虑
- 时刻考虑如何伸缩:在哪些点存在伸缩及如何应对,不同类型的内容如何应对
- 缓和风险:对可能存在的风险进行管理,提出缓和计划
- 监控可用性
- 以可预期及明确的方式来处理可用性问题:如果对监控发生的问题置之不理,监控就没有意义
风险管理就是在消除风险的成本与风险发生的成本之间,保持平衡。
- 识别风险
- 消除最严重的风险
- 风险缓和
- 定期检查:对风险模型的检查
确定服务边界的指导原则:
- 特定的业务需求
- 清晰和独立的团队所有权
- 天然隔离的数据:服务间不能共享对数据的直接访问
- 共享的能力/数据
服务的粒度是一种平衡
服务故障的要求:
- 可预测的响应:如果将一个不可预测的响应传递给下游服务,那么会在整个价值链上传递这种不可预测性;避免在上游服务中产生垃圾数据;
- 可理解的响应:约定的接口应覆盖所有意料之外的情况,包括依赖服务故障;
- 合理的响应:响应的描述应避免无意义标识;
断路器:一定时间段之内的断路器规则判断,是一种常用的处理模式。
故障发生后的行为:
- 优雅降级
- 优雅补偿
- 尽早失败:在服务处理前,根据当前状态尽早给出失败标识,而不是做无谓尝试后再提示失败。
两次失败的高度:能同时容忍两个互不依赖的失败。
服务等级协议:是一个提供某种级别可考核项和性能的承诺,其核心是“期望管理”。
应该保证尽可能少的SLA数量,应当与服务的消费方一起来协商SLA。