dubbo 的配置
日志配置
系统 参数 dubbo.application.logger 配置logger log4j, slf4j , jcl ,jdk
-Ddubbo.properties.file=mydubbo.properties
xml配置的优先级高于properties
在META-INF/dubbo文件夹配置了默认类。
AdaptiveExtensionFactory 调用 SpiExtensionFactory 和 SpringExtensionFactory 加载类;
SpiExtensionFactory 在再META-INF/dubbo中的配置文件对应类。
spring 中dubbo 标签解析类
在META-INF/spring.handles 中定义了 dubbo 自定义标签的解析类为:DubboNamespaceHandler
dubbo:application 对应类 ApplicationConfig ,name , logger
dubbo:registry 服务注册 。address 注册地址 transport 传输方式(netty,mina) ,protocol(dubbo, http, local三种协议) 对应 RegistryConfig 类 。
dubbo:protocol 服务提供协议; 协议名称 dubbo, http , rmi , 协议端口
dubbo:provider 所有服务提供者的默认配置,在service 中可以覆盖。
dubbo:service 服务提供者。 interface 暴露服务的接口 ,ref 实现类。ServiceBean 实现了 InitializingBean , ApplicationContextAware ,ApplicationListener能自动初始化,在spring 容器启动成功后暴露接口。引用配置的protocol
dubbo:consumer 所有客户端的默认配置
dubbo:reference 客户端引用服务者提供的接口。interface 接口,url 直接服务提供。 与service 能够自动初始化。
dubbo:monitor 服务监控方。
服务发布过程
proxyFactory (JavassistProxyFactory ):生产代理类(接口实现类的代理对象)
getInvoker server端,将服务对象,包装成一个Invoker 对象。
getProxy : client 创建接口的代理对象,
wrapper :包装服务对象,调用服务对象的方法。
Invoker Result invoke(Invocation invocation)
protocol :
export : 服务端 将proxyFactory 创将 Invoker 对象暴露 (DubboProtocol)
refer : 客户端引用
exporter :负责invoker的生命周期, 异步转同步。
Exchanger: 信息交换层,分装请求响应模式。
服务引用过程
ReferenceBean 实现 FactoryBean 的getObject 生成代理对象。注册工厂
调用过程
通过netty 远程调用,异步转同步。消息协议,发送方发送的消息包含一个唯一的id,等待响应