《可伸缩架构》 —— Lee Atchison

可用性和可靠性

  • 可靠性:系统是否具备无差错执行预期操作的能力。指系统能够按照技术标准持续运行的能力。如果通过了全部测试,那么意味着它是可靠的;
  • 可用性:为了执行这些操作,系统当前可运行的能力。指系统在其能力范围内执行任务的能力。是否运作正常,是否可以操作,是否可以响应。

提高可用性的五个要点:

  • 时刻考虑应对故障:在设计期对可能发生的故障多做考虑
  • 时刻考虑如何伸缩:在哪些点存在伸缩及如何应对,不同类型的内容如何应对
  • 缓和风险:对可能存在的风险进行管理,提出缓和计划
  • 监控可用性
  • 以可预期及明确的方式来处理可用性问题:如果对监控发生的问题置之不理,监控就没有意义

风险管理就是在消除风险的成本与风险发生的成本之间,保持平衡。

  • 识别风险
  • 消除最严重的风险
  • 风险缓和
  • 定期检查:对风险模型的检查

确定服务边界的指导原则:

  • 特定的业务需求
  • 清晰和独立的团队所有权
  • 天然隔离的数据:服务间不能共享对数据的直接访问
  • 共享的能力/数据

服务的粒度是一种平衡

服务故障的要求:

  • 可预测的响应:如果将一个不可预测的响应传递给下游服务,那么会在整个价值链上传递这种不可预测性;避免在上游服务中产生垃圾数据;
  • 可理解的响应:约定的接口应覆盖所有意料之外的情况,包括依赖服务故障;
  • 合理的响应:响应的描述应避免无意义标识;

断路器:一定时间段之内的断路器规则判断,是一种常用的处理模式。

故障发生后的行为:

  • 优雅降级
  • 优雅补偿
  • 尽早失败:在服务处理前,根据当前状态尽早给出失败标识,而不是做无谓尝试后再提示失败。

两次失败的高度:能同时容忍两个互不依赖的失败。

服务等级协议:是一个提供某种级别可考核项和性能的承诺,其核心是“期望管理”。
应该保证尽可能少的SLA数量,应当与服务的消费方一起来协商SLA。

你可能感兴趣的:(《可伸缩架构》 —— Lee Atchison)