

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 什么是 Amazon App Mesh？
<a name="what-is-app-mesh"></a>

**重要**  
终止支持通知：2026 年 9 月 30 日， Amazon 将停止对的支持。 Amazon App Mesh 2026 年 9 月 30 日之后，您将无法再访问 Amazon App Mesh 控制台或 Amazon App Mesh 资源。有关更多信息，请访问此博客文章[从迁移 Amazon App Mesh 到 Amazon ECS Service Connect](https://www.amazonaws.cn/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect)。

Amazon App Mesh 是一种服务网格，便于监控和控制服务。服务网格是一个基础设施层，专门用于处理 service-to-service通信，通常通过与应用程序代码一起部署的一系列轻量级网络代理。App Mesh 标准化了您的服务通信方式，为您提供 end-to-end可视性并帮助确保应用程序的高可用性。App Mesh 将为您提供对应用程序中的每个服务的一致可见性和网络流量控制。



## 将 App Mesh 添加到示例应用程序中
<a name="example-application"></a>

**重要**  
终止支持通知：2026 年 9 月 30 日， Amazon 将停止对的支持。 Amazon App Mesh 2026 年 9 月 30 日之后，您将无法再访问 Amazon App Mesh 控制台或 Amazon App Mesh 资源。有关更多信息，请访问此博客文章[从迁移 Amazon App Mesh 到 Amazon ECS Service Connect](https://www.amazonaws.cn/blogs/containers/migrating-from-aws-app-mesh-to-amazon-ecs-service-connect)。

考虑以下不使用 App Mesh 的简单示例应用程序。这两项服务可以在亚马逊弹性容器服务 (Amazon ECS) Amazon Fargate、亚马逊弹性 Kubernetes Service (Amazon EKS)、亚马逊弹性计算 EC2云 (亚马逊) 实例上的 Kubernetes 上运行，也可以在 Docker 的亚马逊实例上运行。 EC2 

![\[Diagram showing client service connecting to servicea.apps.local, which connects to serviceb.apps.local.\]](http://docs.amazonaws.cn/app-mesh/latest/userguide/images/simple-app-diagram.png)


在此插图中，`serviceA` 和 `serviceB` 均可通过 `apps.local` 命名空间发现。例如，假设您决定部署 `serviceb.apps.local` named `servicebv2.apps.local` 的新版本。接下来，您要将一定比例的流量从 `servicea.apps.local` 定向到 `serviceb.apps.local`，将一定比例的流量定向到 `servicebv2.apps.local`。当您确定 `servicebv2` 它表现不错时，您想向它发送100%的流量。

 App Mesh 无需更改任何应用程序代码或注册的服务名称即可帮助您完成此操作。如果您在此示例应用程序中使用 App Mesh，则您的网格可能如下图所示。

![\[Diagram showing App Mesh architecture with virtual services, nodes, and router in a mesh network.\]](http://docs.amazonaws.cn/app-mesh/latest/userguide/images/simple-app-with-mesh-diagram.png)


在此配置中，服务不再直接相互通信。相反，它们通过代理相互通信。与 `servicea.apps.local` 服务一起部署的代理读取 App Mesh 配置，并根据配置向 `serviceb.apps.local` 或 `servicebv2.apps.local` 根据配置发送流量。

## App Mesh 的组件
<a name="app_mesh_components"></a>

App Mesh 由以下组件组成，如上一个示例所示：
+ **服务网格** — 一种用于驻留在其内的服务之间的网络流量的逻辑边界。在示例中，网格被命名为 `apps`，它包含网格的所有其他资源。有关更多信息，请参阅 [服务网格](meshes.md)。
+ **虚拟服务** — 一种抽象的实际服务，由虚拟节点直接提供或通过虚拟路由器的方式间接提供。在插图中，两项虚拟服务代表两项实际服务。虚拟服务的名称是实际服务的可发现名称。当虚拟服务和实际服务具有相同名称时，多项服务可以使用与实现 App Mesh 之前相同的名称相互通信。有关更多信息，请参阅 [虚拟服务](virtual_services.md)。
+ **虚拟节点** — 虚拟节点充当指向可发现服务的逻辑指针，例如 Amazon ECS 或 Kubernetes 服务。对于每项虚拟服务，您将至少有一个虚拟节点。在插图中，`servicea.apps.local` 虚拟服务获取名为 `serviceA` 的虚拟节点的配置信息。`serviceA` 虚拟节点配置了用于服务发现的 `servicea.apps.local` 名称。`serviceb.apps.local` 虚拟服务配置为通过名为 `serviceB` 的虚拟路由器将流量路由到 `serviceB` 和 `serviceBv2` 虚拟节点。有关更多信息，请参阅 [虚拟节点](virtual_nodes.md)。
+ **虚拟路由器** — 处理用于您的网格内一项或多个虚拟服务的流量。路由与虚拟路由器关联。该路由用于匹配对虚拟路由器的请求并将流量分发到其关联的虚拟节点。在上图中，`serviceB` 虚拟路由器的路由将一定比例的流量定向到 `serviceB` 虚拟节点，将一定百分比的流量定向到 `serviceBv2` 虚拟节点。您可以设置路由到特定虚拟节点的流量百分比，并随着时间推移进行更改。您可以根据诸如 HTTP 标头、URL 路径或 gRPC 服务和方法名称之类的标准来路由流量。您可以配置重试策略，以便在响应中出现错误时重试连接。例如，在插图中，如果 `serviceb.apps.local` 返回特定类型的错误，`serviceb.apps.local` 路由的重试策略可以指定重试与 连接五次，两次重试之间有十秒钟。有关更多信息，请参阅 [虚拟路由器](virtual_routers.md) 和 [Routes](routes.md)。
+ **代理** — 创建网格及其资源后，您可以将服务配置为使用代理。代理读取 App Mesh 配置并适当地引导流量。在插图中，所有从 `servicea.apps.local` 到 `serviceb.apps.local` 的通信都通过为每项服务部署的代理进行。这些服务使用与引入 App Mesh 之前相同的服务发现名称相互通信。由于代理会读取 App Mesh 配置，因此您可以控制这两项服务之间的通信方式。如果要更改 App Mesh 配置，则无需更改或重新部署服务本身或代理。有关更多信息，请参阅 [Envoy 镜像](envoy.md)。

## 如何开始
<a name="how_to_get_started"></a>

要使用 App Mesh，你必须在亚马逊 ECS、亚马逊 EKS Amazon Fargate、亚马逊上的 Kubernetes EC2 或带有 Docker 的亚马逊上运行现有服务。 EC2 

要开始使用 App Mesh 中的标签，请参阅以下指南：
+ [App Mesh 和 Amazon ECS 入门](https://docs.amazonaws.cn/app-mesh/latest/userguide/getting-started-ecs.html)
+ [App Mesh 和 Kubernetes 入门](https://docs.amazonaws.cn/eks/latest/userguide/appmesh-getting-started.html)
+ [App Mesh 和亚马逊入门 EC2](https://docs.amazonaws.cn/app-mesh/latest/userguide/getting-started-ec2.html)

## 访问 App Mesh
<a name="accessing_app_mesh"></a>

您可以通过以下方式使用 App Mesh：

**Amazon Web Services 管理控制台**  
控制台是一个基于浏览器的界面，您可以用它来管理 App Mesh 资源。您可以通过以下网址打开 App Mesh 控制台[https://console.aws.amazon.com/appmesh/](https://console.amazonaws.cn/appmesh)。

**Amazon CLI**  
为各种 Amazon 产品提供命令，并在 Windows、Mac 和 Linux 上受支持。要开始使用，请参阅[Amazon Command Line Interface 《用户指南》](https://docs.amazonaws.cn/cli/latest/userguide/)。有关 App Mesh 的更多信息，请参阅 [Amazon CLI Command Reference](https://docs.amazonaws.cn/cli/latest/reference/) 中的 [appmesh](https://docs.amazonaws.cn/cli/latest/reference/appmesh/index.html#)。

**Amazon Tools for Windows PowerShell**  
为那些在 PowerShell 环境中编写脚本的用户提供一系列 Amazon 产品的命令。要开始使用，请参阅 [Amazon Tools for PowerShell 用户指南](https://docs.amazonaws.cn/powershell/latest/userguide/pstools-welcome.html)。有关 App Mesh 的 cmdlet 的更多信息，请参阅 [ PowerShellCmdlet 参考Amazon 工具](https://docs.amazonaws.cn/powershell/v4/reference/)中的 [App Mesh](https://docs.amazonaws.cn/powershell/v4/reference/items/AppMesh_cmdlets.html)。

**Amazon CloudFormation**  
使您能够创建描述所需的所有 Amazon 资源的模板。使用模板为您 Amazon CloudFormation 预置和配置资源。要开始使用，请参阅[Amazon CloudFormation 《用户指南》](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/)。有关 App Mesh 资源类型的更多信息，请参阅[Amazon CloudFormation 《模板参考》](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/template-reference.html)[App Mesh 资源类型](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/AWS_AppMesh.html)参考。

**Amazon SDKs**  
我们还提供了允许 SDKs 您从各种编程语言访问 App Mesh 的功能。它们会 SDKs 自动处理任务，例如：  
+ 对服务请求进行加密签名
+ 重试请求
+ 处理错误响应
有关可用工具的更多信息 SDKs，请参阅适用于 [Amazon Web Services 的工具](https://www.amazonaws.cn/tools/)。  
有关 App Mesh 的更多信息 APIs，请参阅 [Amazon App Mesh API 参考](https://docs.amazonaws.cn/app-mesh/latest/APIReference/Welcome.html)。