dubbo原理
1. RPC原理
一次完整的RPC調(diào)用流程(同步調(diào)用,異步另說)如下:
1)服務(wù)消費方(client)調(diào)用以本地調(diào)用方式調(diào)用服務(wù)筷黔;
2)client stub接收到調(diào)用后負(fù)責(zé)將方法尝蠕、參數(shù)等組裝成能夠進(jìn)行網(wǎng)絡(luò)傳輸?shù)南Ⅲw;
3)client stub找到服務(wù)地址爵赵,并將消息發(fā)送到服務(wù)端;
4)server stub收到消息后進(jìn)行解碼;
5)server stub根據(jù)解碼結(jié)果調(diào)用本地的服務(wù);
6)本地服務(wù)執(zhí)行并將結(jié)果返回給server stub喉钢;
7)server stub將返回結(jié)果打包成消息并發(fā)送至消費方;
8)client stub接收到消息良姆,并進(jìn)行解碼肠虽;
9)服務(wù)消費方得到最終結(jié)果。
RPC框架的目標(biāo)就是要2~8這些步驟都封裝起來歇盼,這些細(xì)節(jié)對用戶來說是透明的舔痕,不可見的。
2. dubbo原理
dubbo原理 -框架設(shè)計
? config 配置層:對外配置接口豹缀,以 ServiceConfig, ReferenceConfig 為中心伯复,可以直接初始化配置類,也可以通過 spring 解析配置生成配置類
? proxy 服務(wù)代理層:服務(wù)接口透明代理邢笙,生成服務(wù)的客戶端 Stub 和服務(wù)器端 Skeleton, 以 ServiceProxy 為中心啸如,擴展接口為 ProxyFactory
? registry 注冊中心層:封裝服務(wù)地址的注冊與發(fā)現(xiàn),以服務(wù) URL 為中心氮惯,擴展接口為 RegistryFactory, Registry, RegistryService
? cluster 路由層:封裝多個提供者的路由及負(fù)載均衡叮雳,并橋接注冊中心,以 Invoker 為中心妇汗,擴展接口為 Cluster, Directory, Router, LoadBalance
? monitor 監(jiān)控層:RPC 調(diào)用次數(shù)和調(diào)用時間監(jiān)控帘不,以 Statistics 為中心,擴展接口為 MonitorFactory, Monitor, MonitorService
? protocol 遠(yuǎn)程調(diào)用層:封裝 RPC 調(diào)用杨箭,以 Invocation, Result 為中心寞焙,擴展接口為 Protocol, Invoker, Exporter
? exchange 信息交換層:封裝請求響應(yīng)模式,同步轉(zhuǎn)異步互婿,以 Request, Response 為中心捣郊,擴展接口為 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer
? transport 網(wǎng)絡(luò)傳輸層:抽象 mina 和 netty 為統(tǒng)一接口,以 Message 為中心慈参,擴展接口為 Channel, Transporter, Client, Server, Codec
? serialize 數(shù)據(jù)序列化層:可復(fù)用的一些工具呛牲,擴展接口為 Serialization, ObjectInput, ObjectOutput, ThreadPool
dubbo原理 -啟動解析、加載配置信息
dubbo原理 -服務(wù)暴露
dubbo原理 -服務(wù)引用
dubbo原理 -服務(wù)調(diào)用
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者