Service Directory 是云端数据处理附录中规定的 Google 义务所涵盖的一项服务。
Service Directory 提供一个集中的位置来发布、发现和连接服务,无论服务环境如何,都能以一致且可靠的方式进行。 Service Directory 支持混合云、多云和本地环境中的服务,并且可以针对单个项目扩容到数千个服务和 端点。 Google Cloud
Service Directory 具有以下功能:
- 用于创建和解析 命名空间、 服务和 端点的注册和查找 API
- 与 Cloud DNS 集成。Service Directory 区域允许在 Virtual Private Cloud (VPC) 上提供服务。
- IAM 集成 ,用于分配和控制服务 可见性和权限
- 内置 Google Cloud CLI 和 Google Cloud 控制台 支持,用于与 Service Directory 交互
- Cloud Monitoring 和 Cloud Logging 集成 ,用于监控、审核和调试 Service Directory 操作
为何选择 Service Directory
随着应用采用服务,由于这些服务的端点会发生变化,因此解析服务位置的能力变得越来越困难。在混合环境中部署的服务会带来额外的障碍,因为它们可能不会共享相同的命名系统,这使得解析和连接服务变得具有挑战性。为了说明这个问题,请考虑以下情况。
假设您正在构建一个简单的 API,并且您的代码需要调用其他一些应用。当端点信息保持静态时,您可以将这些位置硬编码到代码中,或将其存储在一个小型配置文件中。 但是,对于微服务和多云,由于实例、服务和环境都可能会发生变化,因此这个问题变得难以解决。
借助 Service Directory,您可以在一个位置注册所有服务,并使用 HTTP、gRPC 和 DNS 解析这些服务。
让我们重新访问之前的图表,但这次添加了 Service Directory。 在下图中,每个服务实例都已向 Service Directory 注册。 这些注册会立即反映在 DNS 中,并且无论其实现和环境如何,都可以使用 HTTP/gRPC 进行查询。
您可以创建一个适用于各种 Google Cloud 产品(例如 App Engine 和 GKE)的通用服务名称。您可以通过 DNS 提供这些服务。您可以根据服务账号的网络、项目和 IAM 角色对服务应用访问权限控制。
Service Directory 可解决以下问题:
- 互操作性:Service Directory 是一种通用命名服务 ,适用于混合云、多云和本地环境 。 Google Cloud您可以在这些环境之间迁移服务,并且仍然可以使用相同的服务名称来注册和解析端点。
- 服务管理:Service Directory 是一种代管式服务。 您的组织无需担心维护自己的服务注册表的高可用性、冗余、伸缩或维护问题。
- 访问权限控制:借助 Service Directory,您可以使用 IAM 控制谁可以 注册和解析您的服务。将 Service Directory 角色分配给团队、服务账号和组织。
- 纯 DNS 的限制:DNS 解析器在遵循 TTL 和缓存方面可能不可靠,无法处理较大的记录大小,并且无法轻松地向用户提供元数据。除了 DNS 支持之外,Service Directory 还提供 HTTP 和 gRPC API 来查询和解析服务。
将 Cloud DNS 与 Service Directory 搭配使用
Cloud DNS 是一种快速、可伸缩且可靠的 域名系统 (DNS) 服务,运行在 Google 的基础架构上。
除了公共 DNS 区域之外, Cloud DNS 还为专用网络提供托管式内部 DNS 解决方案, Google Cloud。 专用 DNS 区域 借助专用 DNS 区域,您可以在内部命名虚拟机实例、负载 均衡器或其他资源。对这些专用 DNS 区域的 DNS 查询仅限于您的专用网络。
下图说明了如何使用 Service Directory 区域通过 DNS 查找来提供服务名称。
各个组件概览:
- 端点通过使用 Service Directory API 直接向 Service Directory 注册。您可以向 Service Directory 注册 Google Cloud 服务 Google Cloud 和非 Google Cloud 服务Google Cloud 。
- 外部和内部客户端都可以在以下网址查找这些服务:https://servicedirectory.googleapis.com
- 如需启用 DNS 请求,请在 Cloud DNS 中创建一个与 Service Directory 命名空间关联的 Service Directory 区域。
- 内部客户端可以使用 DNS、HTTP 和 gRPC 解析此服务。 外部客户端(不在专用网络上的客户端)必须使用 HTTP 或 gRPC 来解析服务名称。
配置示例
如何通过 DNS 公开服务
下图说明了如何在 Service Directory 中对微服务架构进行建模,并使用 DNS 提供该架构。请注意,Service Directory 完全维护服务和端点,但专用区域位于 Cloud DNS 中。
在此图(左侧)中,payments 服务已注册到命名空间,其名称为 backend-namespace,区域为 us-east1,项目为 gcp-project。该命名空间已链接到专用区域 example.com。
如需执行 DNS 查找,客户端会请求域名 _payments._tcp.payments.example.com 的
SRV 记录,该记录会
解析为付款服务端点的端口号和地址记录。
后续步骤
- 如需了解如何设置 Service Directory 命名空间、在该命名空间中创建服务 以及为服务分配端点,请参阅配置 Service Directory。
- 如需了解如何创建利用现有命名空间的 Service Directory 区域,请参阅配置 Service Directory DNS 区域。
- 如需了解如何使用 DNS 向现有 Service Directory 区域发出查询,请参阅使用 DNS 进行查询。
- 如需了解您在使用 Service Directory 时可能会遇到的常见问题的解决方案,请参阅问题排查。 Google Cloud