《可伸缩架构》 —— Lee Atchison

可用性和可靠性

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

提高可用性的五个要点:

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

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

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

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

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

服务的粒度是一种平衡

服务故障的要求:

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

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

故障发生后的行为:

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,224评论 19 139
  • 术语定义 可靠性:系统是否具备无差错地执行预期操作的能力。可用性:为了执行预期操作,系统当前可运行的能力。可用性百...
    zlup阅读 1,099评论 0 0
  • 原文链接 可用性问题通常会在你最想不到的地方出现,许多问题都是系统性的问题,而不仅仅是代码的问题。本文提出了五个要...
    亚斯咪妮阅读 1,125评论 0 1
  • PMP第五版考点汇总冲刺版 第一章引论 P2:《PMI道德与专业行为规范》详细描述从业者在责任、尊重、公正、诚实方...
    文小梦阅读 22,104评论 5 102
  • Faded - Alan Walker 在车上,第一次听到这首歌就爱上了它。 今晚,它是我单曲循环的歌。 这是一首...
    V之日志阅读 862评论 2 4