dubbo配置(dubbo配置文件)
本篇文章给大家谈谈dubbo配置,以及dubbo配置文件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
Dubbo配置参数详解-generic
画外音:目前Dubbo在开源中国举办的2019年度最受欢迎中国开源软件中排名第3名,支持Dubbo的朋友可以去投票哇。 2019年度最受欢迎中国开源软件
Consumer端正常调用Dubbo服务时,一般都需要服务提供方提供一个jar包,只有在项目中引入该jar包,才能调用相关服务;能不能向http调用那样,我只需手颤要知道我要调用的url就可以直接调用Dubbo服务?
有的,这就是generic做的事。
generic :通用服务调用,当我们已经知道我们要调用的服务的全限定闹薯磨名及方法,就不需要服务提供者的jar就能调用Dubbo服务了。
generic要配合interfaceName参数一起使用,其中interfaceName是Dubbo服务的全限定名,比如:
当provider接收到请求时,会调用一系列的过滤器对请求进行处理,这其中就包含处理generic的过滤器: GenericFilter
该过滤器会判断液斗调用的方法是否是$invoke,如果是则会通过反射调用正在的方法
笔者认为该参数最大的用武之地是作为网关使用,笔者所在公司的网关就提供了http转换成dubbo接口调用的功能,前端使用http调用,后端使用dubbo服务进行处理;网关提供一个接口配置页面,只需要业务方在页面配置url与dubbo接口的转换关系即可,网关不需要引用服务提供者的jar包,如果接口有变动,网关无需知道,只要业务方修改配置即可。
【dubbo源码】5.配置信息解析-注解版
用于把dubbo.properties读到spring的environment中,
这个工作是由Spring的ConfigurationClassPostProcessor类来完成的.检测到某个需要注册的Bean上有@PropertySource注解,就会读该文件的配置信息,弄到environment对象的MutablePropertySources对象中。
后期会把配置信息弄到dubbo 配置类中.
该注解上还有@DubboComponentScan,@EnableDubboConfig,这两个注解是dubbo用注解与spring集成的核心了
该注解用@import导入了DubboConfigConfigurationRegistrar这个类
DubboConfigConfigurationRegistrar 实现了ImportBeanDefinitionRegistrar接口,那么spring在实例化的时候会调用DubboConfigConfigurationRegistrar重写ImportBeanDefinitionRegistrar接口的registerBeanDefinitions方法,并且将用亮逗@Import导入DubboConfigConfigurationRegistrar的类的元数据包装成importingClassMetadata对象。
其实就是为了获取入口类AnnoBean上的@EnableDubboConfig注解里的multiple属性配置的值,默认是true.
然后注册了两个DubboConfigConfiguration的内部类
通过读Class对象注册到ioc容器
类上有@EnableDubboConfigBindings,值为@EnableDubboConfigBinding数组
通过绑定,将有对应前缀的配置信拍键含息赋值到对应的配置类中
又用@Import导入DubboConfigBindingsRegistrar类,DubboConfigBindingsRegistrar这个类又实现了ImportBeanDefinitionRegistrar,EnvironmentAware接口
实现ImportBeanDefinitionRegistrar肯定是为了另外导袭笑入一些类,并且拿到导入的源类,获取源类上配置的信息
实现EnvironmentAware是为了拿到spring的environment对象,因为 dubbo.properties 已经被@PropertySource注解机制加载到了environment.MutablePropertySources中,在这里只对beanName的创建有作用。
registrar.registerBeanDefinitions :
注册的过程中,需要从environment对象中拿dubbo相关的配置,比如ApplicationConfig只拿
dubbo.application.*相关的配置,然后创建ApplicationConfig的BeanDefinition.
如果 @EnableDubboConfigBinding配置的multiple为true(默认为false),并且在配置文件中配置了同样前缀的属性,如:
这样会为同一种配置类型,生成两个BD.beanName不同的配置Bean,名称规则如下所示, #0表示的是'.'在配置的key中出现的位置
之后还会注册一个BeanPostProcessor类型的DubboConfigBindingBeanPostProcessor类的beanDefinition,BeanPostProcessor类型 会在每一个Bean实例化的过程中,根据配置的前缀,从environment拿出所需的配置,根据beanName来处理beanName相同的这一个配置Bean,把配置信息绑定到配置类的属性中。
DubboConfigBindingBeanPostProcessor.postProcessBeforeInitialization
利用 dubboConfigBinder 对象来绑定前缀为dubbo.application的配置信息到配置Bean中
这里dubboConfigBinder对象是DubboConfigBindingBeanPostProcessor中的一个属性,是在因为这个类实现了InitializingBean这个接口的afterPropertiesSet方法,dubboConfigBinder对象就是在这里初始化的
最后用的DataBinder的api把一个MutablePropertyValues绑定到Bean的属性
@import进来了DubboComponentScanRegistrar类
DubboComponentScanRegistrar又实现了ImportBeanDefinitionRegistrar接口,实现registerBeanDefinitions方法.
跟xml的逻辑一样,同样是
[img]Dubbo的多注册中心配置
最近项目中用到了Dubbo,Zookeeper,因为底层不同服务之间的调用,涉及到了不同的注册中心。由此写一下关于多注册中心的配置。
SpringBoot框架:
使用yml配置:
dubbo:
registry:
protocol: zookeeper
address: ****.****:2181|****.****:2181
注意:| 竖线宴团分割线就是前祥磨表示不同的注册中心
dubbo:
registry:
protocol: zookeeper
address: ****.****:2181,****.****:2181
注意:, 逗号表示同一注册中心不同的集群
Spring xml配置
注册到不同的服务中心
dubbo:registry id="dubbo" address="****.****:2181"/
dubbo:registry id="dubbo" address="****.****:2181"/
个人公号:【排骨肉段】,可以慧斗关注一下。
关于dubbo配置和dubbo配置文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。