Dubbo的应用和接口

Dubbo的应用和接口

Dubbogo 服务层级

Dubbogo 服务层级为两个级别:分别是应用级别(App Level)和接口级别(Interface Level),该服务分层与框架配置结构息息相关。

如下图所示,可以看到,应用级别的组件以浅红色标注,接口级别的组件以浅蓝色标注:

img

1. 应用级别组件

应用级别组件的特点:被当前应用的所有接口级别组件共用。

应用级别的主要组件如下:

  • 应用信息模块

    包含应用维度相关信息,包括应用名、版本号、数据上报方式等

  • Consumer 模块

    Consumer 模块负责客户端相关信息,包括一个或多个引用(Reference)结构,以及超时、客户端过滤器(consumer filter)等相关信息。

  • Provider 模块

    Provider 模块负责服务端相关信息,包括一个或多个服务(Service)结构、服务端过滤器(provider filter)等相关信息。

  • 注册中心(Registry)模块

    注册中心模块负责定义好所要使用的一系列注册中心,例如框架支持的ZK、Nacos、ETCD等中间件。应用级别的注册模块只负责声明,由接口级别的组件进行引用,引用时以用户自定义的注册中心ID(registryID) 作为索引。

  • 协议(Protocol)模块

    协议模块只存在于服务端。

    协议模块关心服务的暴露信息,例如协议名、服务监听IP、端口号等信息。协议模块属于应用级别,只负责声明,由接口级别的组件进行引用,引用时以用户自定义的协议ID(protocolID) 作为索引。

  • 元数据中心模块

    元数据中心类似于注册中心模块,负责声明框架需要使用的元数据中心,从而将元数据成功上报。

  • 配置中心模块

  • 路由模块

  • 日志模块

  • 监控模块

2. 接口级别组件

  • 服务(Service)模块

    服务模块被使用于任何暴露的服务,声明接口暴露所需的信息,包括例如接口名、协议、序列化方式等,负责单个服务接口的暴露。

  • 引用(Reference)模块

    引用模块被使用于需要调用的远程服务的客户端,其声明了需要请求接口所需的信息,包括例如接口名、协议、序列化方式等、负责特定协议的抽象,参与客户端的生成。

3. 说明

暴露的服务是接口级别的,一个用户定义的 Provider Struct/一个用户定义的Consumer Struct,对应一个Service/Reference 模块,一个应用可以同时存在Consumer 模块和 Provider 模块,因此可以同时存在多个Service/Reference 模块。