服务注册发现
1. Dubbo 的注册中心
注册中心在 RPC 场景下负责保存服务端应用的信息。
服务端注册接口信息和到自身地址到注册中心,客户端从注册中心读取和订阅需要调用的地址列表。整个架构如图所示:
关于 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 支持的注册中心类型如下:
注册中心 | 注册中心名(用于配置) |
---|---|
Zookeeper | zookeeper |
Nacos | nacos |
Etcd | etcd |
Consul | consul |
相关阅读:【应用级服务发现解析】