Dubbo源代码解析

14 篇文章 0 订阅
2 篇文章 0 订阅

一、Dubbo源代码层次结构

common(io序列化、store、线程)+ cofig + 容器container

remoting 远端通信(TCP、编解码、buffer、req/resp、消息分发)->mina netty http p2p zookeeper

RPC(协议、调用者、proxy、filter、tps)

RMI、http、redis、memcached、injvm各种协议的支持

monitor 监控和统计数据

registry 管理和展示服务

 

二、consumer的实现

xml--> ReferenceBean-->ReferenceConfig.createProxy->DubboInvoker->HeaderExchangeClient.request/send

核心概念:proxy refer invoker exchange

 

三、service的实现

xml->ServiceBean->ServiceConfig.export->doExportUrlsFor1Protocol->DubboProtocol.openServer

核心概念:export protocol server

 

四、registry的实现(利用url维护consumer和provider之间的对应关系)

1、订阅

ReferenceConfig->RegistryProtocol.refer->RegistryDirectory.subscribe->ZookeeperRegistry.subscribe

2、注册

内部创建了一个分布式的目录结构

 

五、monitor的实现:

容器内实现了几个pagehandler,对数据进行收集

 

admin

配置、路由等的web修改界面

cluster

多个provider组成的集群的路由、负载均衡、配置

六、核心概念:

1、remoting的层次

  Endpoint->Channel+ChannelHandler + ChannelBuffer->Client + Server->Transporter

  Exchanger:在传输层之上的消息交换的封装,ExchangeXXX对应上面的各个部分

    Response Request ExchangeCodec 完成双向的消息编解码

  HeaderXXX:在Exchanger的基础上,利用消息头来进行通信

2、Rpc

Protocol->Exporter->invoker->Invocation

Exporter 暴露可以被调用的服务

invoker 可以被调用的东西

Invocation 构成一次调用的数据

Protocol(应用层RPC协议) 服务的暴露和使用,除了自己实现的服务之间的调用,还需要和redis、memcache等进行交互,所以抽象出Protocol

Filter  调用过滤器

ProxyFactory 反射的动态代理,目前是javassit或jdk

3、RegistryService:提供注册、订阅等功能

4、PageHandler:对HttpServlet处理逻辑的封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值