Dubbo源代碼解析

一、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處理邏輯的封裝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章