2019 年推出 Builders’Library,旨在聚集亚马逊最有经验的开发者并分享其分布式系统经验。文中以咖啡壶为例,说明其可随时提供咖啡,与计算机系统中处理负载增加等情况类似,很多可靠系统采用简单、可靠的常量工作模式,如亚马逊的 Route53 健康检查和健康性系统、亚马逊 S3 作为配置循环等。这些系统不随负载或压力增减,无模式变化,压力大时减少工作以更好应对,具有抗脆弱性。常量工作模式还具有自然自愈特性,无需干预可自动纠正问题。同时,常量工作设计在某些情况下可能存在浪费,如配置系统,而在其他情况下如弹性扩展的网站,弹性缩放更合适。简单设计意味着易于理解、使用和操作,AWS 多次复用常量工作设计模式,文中还推荐了 Builders’Library 中的相关阅读。
- 咖啡壶与计算机系统对比:咖啡壶可随时提供大量咖啡,与计算机系统中处理大量重复任务类似,虽每次任务耗时,但可保证质量。计算机系统可重复执行任务,但处理大量任务时会变慢,导致队列变长,可靠系统需应对这种变化。
- 亚马逊 Route53 健康检查和健康性:健康检查至关重要,Route53 健康检查通过关联 DNS 名称和答案,配置健康检查来确定端点健康状态,其健康检查器和聚合器采用蜂窝设计,可根据负载增加添加新单元,且即使大量目标同时失败,它们工作也不受影响,健康检查结果以固定大小表格发送到 DNS 服务器,DNS 服务器接收后存储在内存中,查询时交叉引用健康状态,确保响应可靠。
- 亚马逊 S3 作为配置循环:AWS 基础组件配置需极高可靠性,如网络负载均衡器,原工作流方式在大量更改时会变慢,解决方案是将客户更改集成到 S3 中的配置文件,负载均衡器节点每隔几秒从 S3 获取配置并处理加载,即使配置未变也如此,系统具有抗脆弱性,且此方法简单、健壮、成本低。
- 常量工作与自愈:常量工作设计具有自然自愈特性,如配置文件被损坏或 DNS 服务器错过更新,下一次操作会自动纠正,而工作流系统通常是边缘触发,需要复杂逻辑处理各种情况,且易产生积压。
- 设计与可管理性:常量工作系统通常记为 O(1),表示操作数与输入大小无关,实际执行大量操作,但不随输入变化而变化。常量工作模式在配置系统等中节省能量,在某些情况下如网站弹性扩展,弹性缩放更合适。
- 简单设计的价值:文中所说的简单设计不是指部件少,而是易于理解、使用和操作,在 AWS 多次复用,如“每次循环应用完整配置”的简单设计。
- 推荐阅读:文中推荐了 Builders’Library 中的相关文章,如 Clare Liguori 的My CI/CD pipeline is my release captain、David Yanacek 的Fairness in multi-tenant systems、Marc Brooker 的Timeouts, retries, and backoff with jitter。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。