Dubbo 的应用和接口
Dubbogo 服务级别
Dubbogo 有 App Level 和 Interface Level 两个服务级别,它们与框架配置结构息息相关。
如下图所示,可以看到应用级别的组件用浅红色标注,接口级别的组件用浅蓝色标注
1. 应用级组件
应用级组件的特点:被当前应用的所有接口级组件共享。
应用级的主要组件如下
应用信息模块
包含应用维度相关的信息,包括应用名、版本号、数据上报方式等。
消费者模块
Consumer 模块负责客户端相关的信息,包括一个或多个 Reference 结构,以及超时时间、消费者过滤器等相关信息。
- 提供者模块
Provider 模块负责服务端相关的信息,包括一个或多个服务(Service)结构,服务端过滤器(provider filter)等相关信息。
注册中心模块
注册中心模块负责定义一系列要使用的注册中心,例如框架支持的 ZK、Nacos、etcd 等中间件。应用级的注册模块只负责声明,由接口级的组件引用,引用时使用用户自定义的注册中心 ID(registryID)作为索引。
协议模块
协议模块只存在于服务端。
协议模块关心的是服务的暴露信息,例如协议名、服务监听 IP、端口号等信息。协议模块属于应用级,只负责声明,由接口级的组件以用户自定义的协议 ID(protocolID)作为索引进行引用。
元数据中心模块
元数据中心与注册中心模块类似,负责声明框架需要使用的元数据中心,以便元数据能够上报成功。
配置中心模块
路由模块
日志模块
监控模块
2. 接口级组件
服务模块
服务模块用于任何一个暴露的服务,声明接口暴露所需的信息,包括接口名、协议、序列化方式等,负责单个服务接口的暴露。
引用模块
饮用模块由需要调用的远程服务的客户端使用,声明请求接口所需的信息,包括接口名、协议、序列化方式等,负责具体协议的抽象,参与客户端的生成。
3. 说明
暴露的服务是在接口级别的,一个用户自定义的 Provider Struct/一个用户自定义的 Consumer Struct 对应一个 Service/Reference 模块,一个应用可以同时拥有 Consumer 模块和 Provider 模块,所以可以同时存在多个 Service/Reference 模块。