微服务可寻址性和服务注册表

小窍门

此内容摘自电子书《适用于容器化 .NET 应用程序的 .NET 微服务体系结构》,可以在 .NET Docs 上获取,也可以下载免费的 PDF 以供离线阅读。

适用于容器化 .NET 应用程序的 .NET 微服务体系结构电子书封面缩略图。

每个微服务都有用于解析其位置的唯一名称(URL)。 微服务无论在何处运行,都必须可寻址。 如果必须考虑哪个计算机正在运行特定的微服务,情况可能会很快变坏。 DNS 将 URL 解析为特定计算机的方式相同,微服务需要具有唯一的名称,以便其当前位置可发现。 微服务需要可寻址的名称,使其独立于其运行的基础结构。 此方法意味着服务部署方式和发现方式之间存在交互,因为需要 有服务注册表。 同样,当计算机发生故障时,注册表服务必须能够指示服务现在运行的位置。

服务注册表模式是服务发现的关键部分。 注册表是包含服务实例的网络位置的数据库。 服务注册表需保持高度可用且是最新状态。 客户端可以缓存从服务注册表获取的网络位置。 但是,该信息最终过期,客户端无法再发现服务实例。 因此,服务注册表由使用复制协议保持一致性的服务器群集组成。

在某些微服务部署环境中(称为群集,将在后面的部分中介绍)中内置服务发现。 例如,Azure Kubernetes 服务(AKS)环境可以处理服务实例注册和取消注册。 它还在充当服务器端发现路由器角色的每个群集主机上运行代理。

其他资源