在这篇文章中,我们将讨论以下话题:
- Netflix API 架构演进
- 微服务最佳实践
- 代码审查金字塔
- Kubernetes 周期表
- Shopify 构建弹性支付系统的 10 个原则
Netflix API 架构演进
Netflix API 架构经历了 4 个主要阶段:
- 单体(Monolith)
- 直接访问(Direct access)
- 网关聚合层(Gateway aggregation layer)
- 联邦网关(Federated gateway)
我们在 4 分钟视频中解释了演进过程。
9 个微服务最佳实践
当我们开发微服务时,需要遵循以下最佳实践:
- 为每个微服务使用单独的数据存储
- 保持代码处于相似的成熟度水平
- 为每个微服务单独构建
- 为每个微服务分配单一职责
- 部署到容器中
- 设计无状态服务
- 采用领域驱动设计
- 设计微前端
- 编排微服务
问题:还应该包括什么?
代码审查金字塔
Kubernetes 周期表
这个 Kubernetes 周期表揭示了构成 Kubernetes 生态系统的 120 个关键组件。
无论你是开发人员、系统管理员还是云爱好者,这个 handy 资源将帮助你驾驭复杂的 Kubernetes 领域。
Shopify 构建弹性支付系统的 10 个原则
Shopify 有一些宝贵的构建弹性支付系统的提示。
1. 降低超时,让服务尽早失败
默认超时是 60 秒。根据 Shopify 的经验,读取超时 5 秒和写入超时 1 秒是合理的设置。
2. 安装断路器
Shopify 开发了 Semian 来保护 Ruby 中的 Net::HTTP、MySQL、Redis 和 gRPC 服务。
3. 容量管理
如果我们有 50 个请求到达队列,处理一个请求平均需要 100 毫秒,我们的吞吐量是每秒 500 个请求。
4. 添加监控和警报
Google 的站点可靠性工程(SRE)书列出了用户 facing 系统应监控的四个黄金信号:延迟、流量、错误和饱和度。
5. 实施结构化日志
我们将日志存储在集中位置并使其易于搜索。
6. 使用幂等键
使用通用唯一字典序可排序标识符(ULID)作为这些幂等键,而不是随机版本 4 UUID。
7. 对账保持一致
将 Shopify 与财务伙伴的对账中断存储在数据库中。
8. 结合负载测试
Shopify 定期模拟大量闪购以获得基准结果。
9. 掌握事件管理
每个事件频道有 3 个角色:事件经理值班(IMOC)、支持响应经理(SRM)和服务所有者。
10. 组织事件回顾
对于每个事件,Shopify 会问 3 个问题:
- 到底发生了什么?
- 我们对系统持有什么不正确的假设?
- 我们能做些什么来防止这种情况再次发生?
本文为学习目的的个人翻译,译文仅供参考。
原文链接:EP67: Top 9 Microservice Best Practices。
版权归原作者或原刊登方所有。本文为非官方译本;如有不妥,请联系删除。