在这篇文章中,我们将讨论以下话题:
- 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,适合快速构建服务。然而,在大规模运行时,它不具有成本效益。两个最昂贵的操作是:
- 编排工作流 - AWS Step Functions 按状态转换收费,编排每秒执行多次状态转换
- 分布式组件之间的数据传递 - 中间数据存储在 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。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。