目录
一、Dubbo 整体设计
1、dubbo模块概览
-
config** 配置层**:对外配置接口,以 ServiceConfig, ReferenceConfig 为中心,可以直接初始化配置类,也可以通过 spring 解析配置生成配置类
-
proxy 服务代理层:服务接口透明代理,生成动态代理 扩展接口为 ProxyFactory
-
registry 注册中心层:封装服务地址的注册与发现,以服务 URL 为中心,扩展接口为 RegistryFactory, Registry, RegistryService
-
cluster 路由层:封装多个提供者的路由及负载均衡,并桥接注册中心,以 Invoker 为中心,扩展接口为 Cluster, Directory, Router, LoadBalance
-
monitor 监控层:RPC 调用次数和调用时间监控,以 Statistics 为中心,扩展接口为 MonitorFactory, Monitor, MonitorService
-
protocol 远程调用层:封装 RPC 调用,以 Invocation, Result 为中心,扩展接口为 Protocol, Invoker, Exporter
-
exchange 信息交换层:封装请求响应模式,同步转异步,以 Request, Response 为中心,扩展接口为 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer
-
transport 网络传输层:抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel, Transporter, Client, Server, Codec
-
serialize 数据序列化层:可复用的一些工具,扩展接口为 Serialization, ObjectInput, ObjectOutput, ThreadPool
2、dubbo执行流程
二、服务发布
1、dubbo一次服务发布的堆栈信息
//对dubbo:// 协议进行处理 处理逻辑和registry相似
createServer:284, DubboProtocol (com.alibaba.dubbo.rpc.protocol.dubbo)
openServer:263, DubboProtocol (com.alibaba.dubbo.rpc.protocol.dubbo)
export:250, DubboProtocol (com.alibaba.dubbo.rpc.protocol.dubbo)
export:56, QosProtocolWrapper (com.alibaba.dubbo.qos.protocol)
export:100, ProtocolFilterWrapper (com.alibaba.dubbo.rpc.protocol)
export:57, ProtocolListenerWrapper (com.alibaba.dubbo.rpc.protocol)
export:-1, Protocol$Adaptive (com.alibaba.dubbo.rpc)
//先对registry://协议处理
doLocalExport:168, RegistryProtocol (com.alibaba.dubbo