

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

# 主机名路由模式
<a name="api-routing-hostname"></a>

按主机名路由是一种通过为每个 API 提供自己的主机名来隔离 API 服务的机制；例如，`service-a.api.example.com` 或 `service-a.example.com`。

## 典型用例
<a name="hostname-use-case"></a>

通过使用主机名进行路由，可以减少发布中的摩擦，因为服务团队之间不共享任何内容。团队将负责管理从 DNS 条目到生产中服务操作的所有内容。

![用于向上游消费者公开 HTTP API 的主机名路由模式。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/cloud-design-patterns/images/routing-1.png)


## 优点
<a name="hostname-pros"></a>

对于 HTTP API 路由，主机名路由是迄今为止最直接、最具扩展性的方法。您可以使用任何相关 AWS 服务来构建遵循此方法的架构：您可以使用 [Amazon API Gateway](https://aws.amazon.com/api-gateway/)、[AWS AppSync](https://aws.amazon.com/appsync/)、[应用程序负载均衡器](https://aws.amazon.com/elasticloadbalancing/)和 [Amazon Elastic Compute Cloud（Amazon EC2）](https://aws.amazon.com/ec2/)或任何其他符合 HTTP 的服务来创建架构。

团队可以使用主机名路由，以完全拥有其自己的子域。它还可以更轻松地隔离、测试和编排特定 AWS 区域 或版本的部署；例如，`region.service-a.api.example.com` 或 `dev.region.service-a.api.example.com`。

## 缺点
<a name="hostname-cons"></a>

当您使用主机名路由时，您的使用者必须记住不同的主机名，才能与您公开的每个 API 进行交互。您可以通过提供客户端开发工具包来缓解此问题。但是，客户端开发工具包有其自身的挑战。例如，他们必须支持滚动更新、多种语言、版本控制、沟通由安全问题或错误修复引起的破坏性变更、文档等。

使用主机名路由时，还需要在每次创建新服务时注册子域或域。