[翻译]微服务设计模式 – 8. 服务发现 – 第三方注册

原文地址:https://microservices.io/patterns/self-registration.html

背景

假设你采用了客户端服务发现或者设计师证怎么考服务端服务发现,服务启动时需要向注册中心注册实例,在关闭时向注册中心注销,以便其他服务感知。

问题

服务实例如何向注册中心注册或注销?

考虑因素

  • 服务在启动时必须向注册中心注册实例,并且在关闭时在注册中心注销实例
  • 必须从注册中心注销崩溃的服务实例
  • 正在运行但是无法正常提供服务的实例,也需要在注册中心注销

解决方案

引入一个第三方注册代理,负责服务实例模式在服务注册中服务英文心注册和注销。当服务实例启动时,注册代理将实例注册到注册中心。当服务实例关闭时,注册代理负责注销服务英文实例。

举例

第三方注册模式的例子包括:

  • Netflix Prana,用于非 JVM 注册到 Eureka 上,已不再更设计模式面试题新,参考:Towards being better about open source personally
  • AWS 自动扩容组,自动注册 EC2 实例到 AWS设计师证怎么考 负载均衡器上。
  • ContainerPilot,作为服务的父进程在Docker容器中运行,并将其注册到注册中心中。
  • Registrator,负责 Docker 容器向各种不同的注册中心的注册与注销
  • Kubernetes 和 Marathon这种容器编排框架的服务实例都有内置的隐式服务注册

结果分析

第三方微服务架构的优缺点注册模式的好处包括:

  • 服务的代码比使用自注册模式更加简单,因为它不负责注册
  • 注册代理可以对服务实例执行健康检查,并根据健康状态注册/注销实例。

也有一些缺点:

  • 注册代理只对服务实例的状态有模糊的理解,例如只有 UP 和 DOWN,因此可能不知道它是否能够正常处理请求。上面提到的 Netflix Prana 等一些 注册代理 利用健康检查,以确定服务实例的可用性。
  • 需要额外维护一个 注册代理 服务,而且需要高可用。

相关模式

  • 注册中心 - 服务发现的核心
  • 客户端服务发现服务端服务发现
  • 微服务基础框架 - 一般微服务基础框架都有自注册的功能实现
  • 自注册 - 另一种可替代的设计模式