十一、Dubbo——dubbo 原理

dubbo原理

1、RPC原理
在這裏插入圖片描述
一次完整的RPC調用流程(同步調用,異步另說)如下:
1)服務消費方(client)調用以本地調用方式調用服務;
2)client stub(客戶端代理)接收到調用後負責將方法、參數等組裝成能夠進行網絡傳輸的消息體;
3)client stub找到服務地址,並將消息發送到服務端;
4)server stub(服務端代理)收到消息後進行解碼;
5)server stub根據解碼結果調用本地的服務;
6)本地服務執行並將結果返回給server stub;
7)server stub將返回結果打包成消息併發送至消費方;
8)client stub接收到消息,並進行解碼;
9)服務消費方得到最終結果。
RPC框架的目標就是要2~8這些步驟都封裝起來,這些細節對用戶來說是透明的,不可見的。
server stub(服務端代理)
client stub(客戶端代理)

2、netty通信原理
Netty是一個異步事件驅動的網絡應用程序框架, 用於快速開發可維護的高性能協議服務器和客戶端。它極大地簡化並簡化了TCP和UDP套接字服務器等網絡編程。
BIO:(Blocking IO)在這裏插入圖片描述
NIO (Non-Blocking IO)
在這裏插入圖片描述
Selector 一般稱 爲選擇器 ,也可以翻譯爲 多路複用器,
Connect(連接就緒)、Accept(接受就緒)、Read(讀就緒)、Write(寫就緒)
Netty基本原理:

在這裏插入圖片描述
3 dubbo原理
1)dubbo原理 -框架設計
在這裏插入圖片描述
(1)config 配置層:對外配置接口,以 ServiceConfig, ReferenceConfig 爲中心,可以直接初始化配置類,也可以通過 spring 解析配置生成配置類
(2)proxy 服務代理層:服務接口透明代理,生成服務的客戶端 Stub 和服務器端 Skeleton, 以 ServiceProxy 爲中心,擴展接口爲 ProxyFactory
(3)registry 註冊中心層:封裝服務地址的註冊與發現,以服務 URL 爲中心,擴展接口爲 RegistryFactory, Registry, RegistryService
(4)cluster 路由層:封裝多個提供者的路由及負載均衡,並橋接註冊中心,以 Invoker 爲中心,擴展接口爲 Cluster, Directory, Router, LoadBalance
(5)monitor 監控層:RPC 調用次數和調用時間監控,以 Statistics 爲中心,擴展接口爲 MonitorFactory, Monitor, MonitorService
(6)protocol 遠程調用層:封裝 RPC 調用,以 Invocation, Result 爲中心,擴展接口爲 Protocol, Invoker, Exporter
(7)exchange 信息交換層:封裝請求響應模式,同步轉異步,以 Request, Response 爲中心,擴展接口爲 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer
(8)transport 網絡傳輸層:抽象 mina 和 netty 爲統一接口,以 Message 爲中心,擴展接口爲 Channel, Transporter, Client, Server, Codec
(9)serialize 數據序列化層:可複用的一些工具,擴展接口爲 Serialization, ObjectInput, ObjectOutput, ThreadPool

2)dubbo原理 -啓動解析、加載配置信息
在這裏插入圖片描述
在這裏插入圖片描述
3)dubbo原理 -服務引用
在這裏插入圖片描述
4)dubbo原理 -服務調用
在這裏插入圖片描述

發佈了100 篇原創文章 · 獲贊 9 · 訪問量 9204
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章