• Dubbo 配置的加载流程


    配置加载流程

    在SpringBoot应用启动阶段,Dubbo的读取配置遵循以下原则

    1. Dubbo支持了多层级的配置,按照预先定义的优先级自动实现配置之间的覆盖,最终所有的配置汇总到数据总线URL后,驱动后续的服务暴露、引用等流程。
    2. ApplicationConfig、ServiceConfig、ReferenceConfig可以被理解成配置来源的一种,是直接面向用户编程的配置采集方式。
    3. 配置的格式以properties为主。

    配置来源

    • JVM系统属性,-D参数
    • 外部化配置
    • ServiceConfig、ReferenceConfig等编程接口采集的配置
    • 本地配置文件 dubbo.properties

    覆盖关系

    JVM参数配置 > 外部配置 > Spring/API配置 > 本地配置文件
    在这里插入图片描述

    JVM参数配置-Ddubbo.protocol.port=20881

    在这里插入图片描述

    在这里插入图片描述

    配置格式

    目前Dubbo支持的所有配置都是.properties格式的,包括-D、Externalized Configuration等,.properties中的所有配置项遵循一种path-based的配置格式:

    • 应用级别
    
    dubbo.application.name=demo-provider 
    dubbo.registry.address=zookeeper://127.0.0.1:2181 
    dubbo.protocol.port=-1
    
    • 服务级别
    
    dubbo.service.org.apache.dubbo.samples.api.DemoService.timeout=5000 dubbo.reference.org.apache.dubbo.samples.api.DemoService.timeout=6000 dubbo.reference.org.apache.dubbo.samples.api.DemoService.sayHello.timeout=7000
    
    • 多配置项
    dubbo.registries.unit1.address=zookeeper://127.0.0.1:2181 dubbo.registries.unit2.address=zookeeper://127.0.0.1:2182 
    dubbo.protocols.dubbo.name=dubbo 
    dubbo.protocols.dubbo.port=20880 
    dubbo.protocols.hessian.name=hessian 
    dubbo.protocols.hessian.port=8089
    
    • 扩展配置
    dubbo.application.parameters.item1=value1 
    dubbo.application.parameters.item2=value2 
    dubbo.registry.parameters.item3=value3 dubbo.reference.org.apache.dubbo.samples.api.DemoService.parameters.item4=value4
    

    配置方式

    Spring中采用XML格式配置
    例如

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
        <!--指定提供当前服务的名字-->
        <dubbo:application name="dubbo-provider"></dubbo:application>
    
        <!--指定注册中心-->
        <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
    
        <!--指定通信规则-->
        <dubbo:protocol name="dubbo" port="-1"></dubbo:protocol>
    
        <bean id="userAddressImpl" class="cn.edu.nyist.provider.serviceImpl.UserAddressImpl"/>
    
        <!--暴露服务的接口 ref指向实现的对象-->
        <dubbo:service interface="cn.edu.nyist.service.UserAddressService" ref="userAddressImpl"></dubbo:service>
    
        <!--自动选取监控中心-->
        <dubbo:monitor protocol="registry"></dubbo:monitor>
    </beans>
    

    Spring也可采用注解配置

    import com.alibaba.dubbo.config.annotation.Service;
    import org.springframework.stereotype.Component;
    
    
    @Service
    @Component
    public class UserAddressImpl implements UserAddressService {
        @Override
        public List<UserAddress> getUserAddressList(String userId) {
            UserAddress userAddress1 = new UserAddress(userId, "小王", "花果山水帘洞11号", "12456657");
            UserAddress userAddress2 = new UserAddress(userId, "小王", "盘丝洞12号", "666666");
            return Arrays.asList(userAddress1, userAddress2);
        }
    }
    

    SpringBoot中的application配置

    dubbo.application.name=dubbo-provider
    dubbo.registry.address=zookeeper://127.0.0.1:2181
    dubbo.protocol.name=dubbo
    dubbo.protocol.port=-1
    dubbo.monitor.protocol=registry
    
    
  • 相关阅读:
    介绍Collection框架的结构;Collection 和 Collections的区别
    Mybites和hibernate的优缺点和区别2
    Mybites和hibernate的优缺点和区别
    AJAX如何获取从前台传递过来的数据然后在通过servle传递给后台
    list map set 集合的区别
    乐观锁和悲观锁的区别
    python生产消费Kafka
    python类型转换
    python实现远程方法调用
    Scala常用数据结构
  • 原文地址:https://www.cnblogs.com/itjiangpo/p/14181373.html
Copyright © 2020-2023  润新知