微服务参考实现
Microsoft 模式与实践
这个参考实现展示了在 Microsoft Azure 上使用 Kubernetes 构建和运行微服务架构的一系列最佳实践。
:heavy_exclamation_mark: 之前的高级微服务参考实现现在被称为 AKS Fabrikam 无人机送货参考实现。AKS Fabrikam 无人机送货参考实现是基于 AKS 基线集群 指南构建的。这个基础微服务参考实现将保留在此处供您参考,但我们建议您考虑基于 AKS Fabrikam 无人机送货参考实现 开展工作。
指南
本项目有一系列配套文章,描述了构建微服务架构的挑战、设计模式和最佳实践。您可以在 Azure 架构中心找到这些文章:
场景
Fabrikam 公司(一家虚构的公司)正在启动一项无人机送货服务。该公司管理着一支无人机机队。企业可以注册使用这项服务,用户可以请求无人机来提取货物进行配送。当客户安排取货时,后端系统会分配一架无人机并通知用户预计的送达时间。在配送过程中,客户可以跟踪无人机的位置,并获得持续更新的预计到达时间。
无人机送货应用
无人机送货应用是一个由多个微服务组成的示例应用。由于它是一个示例,其功能是模拟的,但 API 和微服务之间的交互旨在反映真实世界的设计模式。
- 接收服务。接收客户端请求并进行缓冲。
- 调度服务。分派客户端请求并管理配送工作流程。
- 监管服务。监控工作流程中的故障并应用补偿事务。
- 账户服务。管理用户账户。
- 第三方运输服务。管理第三方运输选项。
- 无人机服务。调度无人机并监控飞行中的无人机。
- 包裹服务。管理包裹。
- 配送服务。管理已安排或正在运输中的配送。
- 配送历史服务。存储已完成配送的历史记录。
测试结果和指标
无人机送货应用已经通过每秒 2000 条消息的测试:
副本数 | ~最大 CPU (mc) | ~最大内存 (MB) | 平均吞吐量* | 最大吞吐量* | 平均 (ms) | 50百分位 (ms) | 95百分位 (ms) | 99百分位 (ms) | |
---|---|---|---|---|---|---|---|---|---|
Nginx | 1 | 不适用 | 不适用 | 服务: 1595 请求/秒 | 服务: 1923 请求/秒 | 不适用 | 不适用 | 不适用 | 不适用 |
接收 | 10 | 474 | 488 | 接收: 1275 消息/秒 | 接收: 1710 消息/秒 | 251 | 50.1 | 1560 | 2540 |
工作流(接收消息) | 35 | 1445 | 79 | 出口: 1275 消息/秒 | 出口: 1710 消息/秒 | 81.5 | 0 | 25.7 | 121 |
工作流(调用后端服务 + 标记消息为完成) | 35 | 1445 | 79 | 完成: 1100 消息/秒 | 完成: 1322 消息/秒 | 561.8 | 447 | 1350 | 2540 |
包裹 | 50 | 213 | 78 | 不适用 | 不适用 | 67.5 | 53.9 | 165 | 306 |
配送 | 50 | 328 | 334 | 不适用 | 不适用 | 93.8 | 82.4 | 200 | 304 |
无人机调度器 | 50 | 402 | 301 | 不适用 | 不适用 | 85.9 | 72.6 | 203 | 308 |
*来源:
- 服务: Visual Studio 负载测试每秒请求吞吐量
- 接收: Azure 服务总线指标每秒传入消息
- 出口: Azure 服务总线指标每秒传出消息
- 完成: AI 服务总线完成依赖项
- 平均/50百分位/95百分位/99百分位: AI 依赖项
- CPU/内存: Azure 容器监控
部署
要部署该解决方案,请按照 此处 列出的步骤操作。
本项目已采用 Microsoft 开源行为准则。有关更多信息,请参阅 行为准则常见问题解答,或联系 opencode@microsoft.com 提出任何其他问题或意见。