目录
前言:
在之前的dubbo源码解析中,我们大致了解了spring+dubbo整合案例以及spring入口分析和dubbo配置相关解析,在此学习过程中了解了dubbo相关的AbstrcatConfig相关配置类,
这些类是我们使用dubbo的最基础的配置类,因为具体的dubbo功能实现还是其对应的api在起作用,使用spring我们只是使用了其核心的容器IOC来便于我们业务开发,下面我们抛开spring来单独研究dubbo的api调用过程,有关api的调用笔者准备使用两篇博客进行介绍分别为服务提供和服务消费。
1、dubbo服务提供者api
/**
* 使用api编码的形式进行dubbo服务暴露
*/
public void exportService(){
//模拟spring服务实现(此处不使用spring环境 读者可以自行使用)
UserService demoService = new UserServiceImpl();
//1、创建应用信息(服务提供者和服务消费者均需要,以便用于计算应用之间的依赖关系)
ApplicationConfig appliction = new ApplicationConfig("demo-core");
//2、创建注册中心(服务提供者和服务消费者均需要,以便用于服务注册和服务发现)
//dubbo支持的注册中心:①simple、②Multicast、③zookeeper、④ redis
//这里采用zookeeper(常用也是dubbo推荐使用的)
RegistryConfig registry = new RegistryConfig();
registry.setAddress("zookeeper://182.92.189.235:2181");
//3、创建服务暴露后对应的协议信息,该设置约定了消费者使用哪种协议来请求服务提供者
//dubbo消费协议如下: ①dubbo://、②hessian://、③rmi://、 ④http://、⑤webservice://、⑦memcached://、⑧redis://
ProtocolConfig protocol = new ProtocolConfig();
//使用dubbo协议
protocol.setName("dubbo");
protocol.setPort(28830);
//4、该类为服务消费者的全局配置(比如是否延迟暴露,是否暴露服务等)
ProviderConfig provider = new ProviderConfig();
//是否暴露服务
provider.setExport(true);
//延迟一秒发布服务
provider.setDelay(1000);
//5、服务提供者 会配置应用、注册、协议、提供者等信息
ServiceConfig<UserService> serviceService = new ServiceConfig<>();
//设置应用信息
serviceService.setApplication(appliction);
//设置注册信息
serviceService.setRegistry(registry);
//设置相关协议
serviceService.setProtocol(protocol);
//设置全局配置信息
serviceService.setProvider(provider);
//设置接口信息
serviceService.setInterface(UserService.class);
serviceService.setRef(demoService);
//6、服务发布 (最终上面设置的相关信息转换为Dubbo URL的形式暴露出去)
serviceService.export();
while (true){
}
}
在上述代码中我们核心关注的ServiceConfig(dubbo服务的提供),但是我们也不能忽视为使ServiceConfig的功能能够使用的其他配置列如:注册(RegistryConfig)、协议(ProtocolConfig)、服务提供者全局配置(ProviderConfig)等。
2、dubbo相关配置的描述
下面贴出其配置的UML类图
1、AbstractConfig 主要提供配置解析与校验相关的通用方法
比如配置解析
appendParameters()方法:根据类上所有公有方法的@Parameter注解从配置信息获取配置并通过setXXX方法填充
appendAttributes()方法:根据类上所有公有方法的@Parameter注解从配置信息获取配置存放到map集合中
比如校验
checkExtension()方法:检查属性的长度和非法字符串
2、ModubleConfig 模块信息
我们可以针对一个应用区分不同模块,并为模块设置不同的配置信息 比如注册信息,协议信息等
3、ProviderConfig 服务提供者全局配置
4、RegistryConfig 注册相关配置,dubbo目前支持的注册中心有五种分别为:
(1)、Zookeeper (2)、Multicast (3)、Redis (4)、Simple
5、MonitorConfig 监控中心配置
6、ProtocolConfig dubbo服务请求协议
dubbo消费协议如下: ①dubbo://、②hessian://、③rmi://、 ④http://、⑤webservice://、⑦memcached://、⑧redis://
7、ProviderConfig 服务提供者全局配置
8