AWS Cloud Map 专业2018年〜
为应用程序资源提供服务发现功能的服务
它能做什么
AWS Cloud Map 是一项服务发现服务,可以集中管理构成应用程序的服务和资源的位置(IP 地址、URL 等),并通过名称进行查找。在微服务架构中,使各服务能够动态发现彼此的连接目标。支持基于 DNS 和基于 API 两种发现方式。
使用场景
用于微服务架构中动态解析服务间通信目标的场景。例如,当 ECS 或 EKS 上的容器增减时,自动更新连接信息,使其他服务始终能获取正确的连接目标。还可以作为包含 Lambda 函数和数据库等非容器资源在内的统一服务注册表使用。
日常类比
可以将其比作公司内部的电话簿。在大公司中,员工会调动,新部门会成立。Cloud Map 就是一本始终保持最新状态的电话簿,搜索“销售部的田中”就能立即知道当前的分机号码(IP 地址)。即使员工换了座位,电话簿也会自动更新,不用担心拨打旧号码。
什么是 Cloud Map
AWS Cloud Map 是一项通过名称管理和查找云上应用程序资源的服务发现服务。在微服务中,众多小型服务相互通信,但各服务的连接目标(IP 地址和端口号)会随着扩缩容和部署而变化。Cloud Map 集中管理这些连接信息,只需通过服务名称查询即可返回最新的连接目标。
基于 DNS 和基于 API 的发现
Cloud Map 提供两种发现方式。基于 DNS 的发现将服务名称注册为 DNS 名称,通过标准 DNS 查询解析连接目标。优点是无需修改现有应用程序即可引入。基于 API 的发现使用 AWS SDK 获取连接目标。不仅可以获取 IP 地址,还可以获取端口号和自定义属性(版本信息等),实现更灵活的路由。
与 ECS 和 EKS 的集成
Cloud Map 与 Amazon ECS 和 Amazon EKS 集成,在容器部署时自动注册和注销服务实例。例如,当 ECS 服务的任务数从 3 扩展到 5 时,新增的 2 个任务的 IP 地址会自动注册到 Cloud Map。任务停止时会自动注销,无需手动维护。 要深入了解与 ECS 和 EKS 集成的实践知识,可以参考相关书籍(Amazon)。
开始使用
要开始使用 Cloud Map,首先创建命名空间(Namespace)。命名空间可以选择基于 DNS 或基于 API。然后在命名空间内创建服务,注册服务实例(实际资源的连接信息)。如果使用 ECS,只需在服务定义中启用 Cloud Map 集成,任务的注册和注销就会自动化。
注意事项
- 基于 DNS 的发现依赖于 DNS 缓存的 TTL,连接目标的变更可能不会立即生效。如需实时性,请考虑使用基于 API 的方式
- 启用 Cloud Map 的健康检查功能后,可以自动将异常实例从发现结果中排除
- 命名空间的类型(DNS 公共、DNS 私有、仅 API)创建后无法更改,请提前选择适合用途的类型