微服务可寻址性和服务注册表
每个微服务都有一个唯一名称 (URL),用于解析其位置。 无论微服务在哪里运行,都需是可寻址的。 如果必须考虑哪一台计算机正在运行某个特定微服务,事情可能很快就不那么好办了。 按照 DNS 解析特定计算机 URL 的相同方式,微服务需要有唯一名称,以便可发现其当前位置。 微服务需要可寻址的名称,使其独立于运行于其中的基础结构。 此方法意味着服务部署方式与服务发现方式之间存在交互,因为此处需要一个服务注册表。 同样,如果计算机出现故障,注册表服务须能够指出服务的运行位置。
服务注册表模式是发现服务的一个关键部分。 注册表是包含服务实例的网络位置的数据库。 服务注册表需保持高度可用且是最新状态。 客户端可缓存从服务注册表获得的网络位置。 但是,该信息最终也会过时,客户端便无法再发现服务实例。 因此,服务注册表包含了一个服务器群集,使用复制协议来维护一致性。
在某些微服务部署环境中(称为集群,将在后面章节中介绍),服务发现是内置的。 例如,Azure Kubernetes 服务 (AKS) 环境可以处理服务实例注册和注销。 它还可在每个群集主机(充当服务器端发现路由器角色)上运行一个代理。
其他资源
Chris Richardson. Pattern: Service registry(模式:服务注册表)
https://microservices.io/patterns/service-registry.htmlAuth0。 The Service Registry(服务注册表)
https://auth0.com/blog/an-introduction-to-microservices-part-3-the-service-registry/Gabriel Schenker. 服务发现
https://lostechies.com/gabrielschenker/2016/01/27/service-discovery/