AWS App Mesh 专业2018年〜
控制和监控微服务间通信的服务网格
它能做什么
AWS App Mesh 是一种集中控制和监控微服务间网络通信的服务网格。它在每个服务旁部署边车代理(Envoy),无需修改应用代码即可实现流量路由、重试、超时、熔断器等通信控制。支持在 ECS、EKS 和 EC2 上运行的服务。
使用场景
用于微服务架构中服务间通信的可视化、金丝雀部署(逐步将流量迁移到新版本)、故障时的自动重试和降级控制等。在服务数量增多、通信管理变得复杂的环境中尤为有效。
日常类比
可以将其比作机场的空中管制塔。当大量飞机(微服务)往来于机场时,管制塔(App Mesh)掌握所有飞行路线(通信),指示安全的航线。遇到恶劣天气(故障)时,还会引导飞机转向备用航线(重试/降级),防止碰撞(通信故障)。
什么是 App Mesh
AWS App Mesh 是用于管理微服务间通信的服务网格。在微服务架构中,众多小型服务通过网络协作。随着服务数量增加,通信控制和故障处理变得复杂。App Mesh 集中管理所有服务通信,提供统一的路由、监控和故障处理机制。
通过 Envoy 代理进行通信控制
App Mesh 在每个服务旁以边车形式部署 Envoy 代理。由于所有服务间通信都经过此 Envoy 代理,因此无需修改应用代码即可添加通信控制。重试次数、超时时间、健康检查设置可通过 App Mesh 控制台或 API 集中管理,无需为每个服务单独实现。
流量路由
使用 App Mesh 的路由功能,可以灵活控制流量分配。例如,可以进行仅将 10% 流量发送到新版本服务的金丝雀部署,或根据 HTTP 头部值路由到特定版本的 A/B 测试。出现问题时,可以立即将流量切回旧版本。 想要深入了解流量路由的读者,相关书籍(Amazon)也很有帮助。
开始使用
在 App Mesh 控制台中创建网格,定义虚拟服务、虚拟节点和虚拟路由器。在 ECS 任务定义中添加 Envoy 边车容器,与 App Mesh 集成。与 CloudWatch 和 X-Ray 集成后,可以可视化服务间通信的指标和追踪信息。建议先从 2-3 个服务开始小规模试用。
注意事项
- App Mesh 本身免费,但 Envoy 边车容器需要额外的 ECS/EKS 计算资源
- 引入服务网格会增加运维复杂度,服务数量较少时可能过度设计。建议在通信管理成为挑战时再考虑采用
- 请使用 App Mesh 推荐的 Envoy 代理版本。不兼容的版本可能无法正常工作