在这篇文章中,我们将讨论以下话题:

  • 7 个最常用的分布式系统模式
  • Amazon Prime Video 监控服务
  • RPC vs. RESTful
  • 存储系统的成本

7 个分布式系统模式

  • Ambassador(大使)
  • Circuit Breaker(断路器)
  • CQRS(命令查询职责分离)
  • Event Sourcing(事件溯源)
  • Leader Election(领导者选举)
  • Publisher/Subscriber(发布/订阅)
  • Sharding(分片)

问题:我们忽略了哪些额外的模式?

Amazon Prime Video 监控服务

为什么 Amazon Prime Video 监控从无服务器迁移到单体?如何节省 90% 成本?

什么是 Amazon Prime Video 监控服务?

Prime Video 服务需要监控数千个直播流的质量。监控工具自动实时分析流并识别质量问题,如块损坏、视频冻结和同步问题。这是客户满意度的重要过程。

有 3 个步骤:媒体转换器、缺陷检测器和实时通知。

旧架构的问题

旧架构基于 Amazon Lambda,适合快速构建服务。然而,在大规模运行时,它不具有成本效益。两个最昂贵的操作是:

  1. 编排工作流 - AWS Step Functions 按状态转换收费,编排每秒执行多次状态转换
  2. 分布式组件之间的数据传递 - 中间数据存储在 Amazon S3 中,以便下一阶段可以下载。当 volume 很高时,下载可能很昂贵

单体架构节省 90% 成本

设计了单体架构来解决成本问题。仍然有 3 个组件,但媒体转换器和缺陷检测器部署在同一进程中,节省了通过网络传递数据的成本。令人惊讶的是,这种部署架构变化导致了 90% 的成本节省!

这是一个有趣且独特的案例研究,因为微服务已成为科技行业的首选和时尚选择。很高兴看到我们有更多关于演进架构的讨论,以及关于其优缺点的更诚实讨论。将组件分解为分布式微服务是有成本的。

Amazon 领导人怎么说

Amazon CTO Werner Vogels:“构建可演进软件系统是一种策略,而不是宗教信仰。以开放的心态重新审视你的架构是必须的。”

前 Amazon 副总裁可持续发展 Adrian Cockcroft:“Prime Video 团队遵循我称之为”无服务器优先”的路径……我不主张”仅无服务器""。

问题:微服务架构是解决架构问题还是组织问题?

RPC vs. RESTful

不同软件系统之间的通信可以使用 RPC(远程过程调用)或 RESTful(表述性状态转移)协议建立。

两种协议主要在设计哲学上有所不同。RPC 允许在服务器上调用远程过程,就像它们是本地过程一样,而 RESTful 应用是基于资源的,并通过 HTTP 方法与这些资源交互。

在选择 RPC 和 RESTful 之间时,考虑你的应用需求。如果你需要更面向操作的方法和自定义操作,RPC 可能更适合;如果你更喜欢利用 HTTP 方法的标准化、基于资源的方法,RESTful 会是更好的选择。

问题:RPC 和 RESTful API 版本控制和确保向后兼容性的最佳实践是什么?

存储系统的成本

存储系统的价格和其访问延迟之间存在权衡。自然,人们可能想知道如果愿意牺牲延迟,可以获得多少存储。

为了使这个计算更有趣,让我们使用 Tesla Model S 的价格作为基准:

存储类型价格
Tesla Model S$87,490/辆
L1 缓存$7/MB
L2 缓存$7/MB
RAM$70/32GB
SSD$35/128GB
HDD$350/12TB

本文为学习目的的个人翻译,译文仅供参考。

原文链接:EP59: 90% Cost Slash: From Serverless to Monolith

版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。