dubbo源码解析(三) api配置之服务提供者

本文详细解析了Dubbo服务提供者的API配置,包括ServiceConfig、RegistryConfig、ProtocolConfig等核心配置类,以及服务发布的export()、doExport()和doExportUrls()方法。通过构建DubboURL并进行服务暴露,阐述了如何将配置信息转化为URL参数,以供消费者消费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、dubbo服务提供者api

2、dubbo相关配置的描述

3、服务发布

       3.1、export()

       3.2、doExport()方法

       3.3、doExportUrls()方法

4、doExportUrlsFor1Protocol()

       4.1、构建DubboURL

       4.2、dubbo服务暴露


 前言:

       在之前的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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值