服务注册发现

服务注册发现

1. Dubbo 的注册中心

注册中心在 RPC 场景下负责保存服务端应用的信息。

服务端注册接口信息和到自身地址到注册中心,客户端从注册中心读取和订阅需要调用的地址列表。整个架构如图所示:

img

关于 Dubbo 服务发现细节,详情可参考 Dubbo 官网的概念介绍

2. 服务发现概念

Dubbo 生态中,服务发现有以下主要概念:

  • 应用 Application

    应用是一个 dubbo 服务进程,对应一个应用名。

  • 接口(服务)

    接口是一个 RPC 接口类,例如一个通过 proto 定义的 Service,再例如一个 Java Interface 类。一个 dubbo 进程可以包含多个服务/接口。

  • 方法

    方法在接口中定义,一个接口可以包含多个方法。

  • 参数列表

    参数列表在方法中定义。由于 Java 支持重载,一个方法可以包含多个参数列表。对于 Go 是一对一的关系。

  • 注册信息

    在“接口级服务发现”的场景下,注册信息主要包含应用名、接口列表、元数据信息、以及服务端的IP地址等。以 URL 的形式保存在注册中心,供客户端发起调用前查询。

    在“应用级服务发现”的场景下,注册信息只包含应用名、应用名到接口的映射等少量应用级别的信息,接口级别的信息作为元数据保存在元数据中心。

  • 元数据

    元数据指接口信息,例如接口名、包含的方法、方法对应的参数、序列化方式、协议等等信息。

  • 注册中心

    注册中心用于保存服务端的信息。

  • 元数据中心

    元数据中心用于保存服务端的元数据信息,在“应用级服务发现”场景中,作为“服务自省”阶段的依赖。

Dubbo-go 中的服务网格能力,引入以下几个概念

  • 主机名

    主机名当前应用在 k8s 上注册的 Service 名。其他应用可以通过主机名访问本应用实例。

  • 端点

    端点包含实例的 IP 地址、端口。

  • 集群

    集群 ID 保存了从{主机名、集群子集名、端口}

    集群保存集群 ID 到所有其包含端点的映射关系。

  • 服务网格元数据

    服务网格元数据是接口名到主机名到映射,用于客户端查询所需接口的主机名信息。

3. Dubbo-go 注册中心

Dubbo-go 支持的注册中心类型如下:

注册中心注册中心名(用于配置)
Zookeeperzookeeper
Nacosnacos
Etcdetcd
Consulconsul

相关阅读:【应用级服务发现解析】


最后修改 May 9, 2023: Fix typos (#2588) (aca9ff3b74)