RPC理解總結(jié)

RPC是把遠(yuǎn)程過(guò)程調(diào)用偽裝成本地方法,抽象隔離具體實(shí)現(xiàn)和協(xié)議。

這種模式的優(yōu)點(diǎn)是屏蔽了底層協(xié)議的消息編解碼,調(diào)用雙方的消息及上下文的維護(hù)委托給RPC框架,進(jìn)而調(diào)用雙方都可以面向類似本地函數(shù)調(diào)用的高階接口編程。設(shè)計(jì)的技術(shù)點(diǎn)有:

1)客戶端函數(shù)接口生成和攔截解釋:(應(yīng)用層)

從java角度看就是接口代理對(duì)象的生成,在不支持反射的語(yǔ)言里可以通過(guò)編譯器技術(shù)來(lái)實(shí)現(xiàn)(C++仿函綁定rpc調(diào)用框架的方法實(shí)現(xiàn))或者通過(guò)IDL來(lái)生成代碼的方式來(lái)繞過(guò)。

2)會(huì)話管理(會(huì)話層)

通信序列化的協(xié)商,調(diào)用消息上下文及生命周期的維護(hù)。兼顧過(guò)程調(diào)用的本地存根維護(hù)。

3)追蹤、路由、降級(jí)等治理方面

樸素的rpc模型中不包含該層,SOA的本質(zhì)是度量,改進(jìn)式反饋再度量的閉環(huán)。

4)網(wǎng)絡(luò)通信傳輸客戶端 (傳輸層)

傳輸層對(duì)上層透明,傳輸層‘連接’管理,傳輸層緩沖區(qū)管理。

5)編解碼器(傳輸會(huì)話結(jié)合層)

適配應(yīng)用層的協(xié)議頭,以便支持多種不同層面的傳輸協(xié)議,比如dubbo協(xié)議是基于tcp的還有基于http還有其他協(xié)議。

6)序列化(表示層)

序列的本質(zhì):使得數(shù)據(jù)完全使用字節(jié)表示,數(shù)據(jù)間的關(guān)系表示脫離對(duì)內(nèi)存地址的依賴,同時(shí)去除數(shù)據(jù)業(yè)務(wù)邏輯層面無(wú)關(guān)的運(yùn)行時(shí)附加信息。這層的作用是多種編解碼器的動(dòng)態(tài)切換,緩沖的集約使用。

小結(jié)

客戶端出棧方向不是按網(wǎng)絡(luò)七層順序組織的,對(duì)換了傳輸層和表示層,中間還插入了編解碼層,使得管理傳輸方式和多種傳輸層和序列化協(xié)議適配提供便捷有效的溝通方式。這種傳輸層上浮,編解碼和序列化作為委托的結(jié)構(gòu),對(duì)于管理傳輸?shù)倪B續(xù)性有很大的好處。傳統(tǒng)七層模型的缺點(diǎn)是表示層是面向網(wǎng)絡(luò)字節(jié)的,丟失很多上下文信息,層與層間的隔離阻斷了信息傳遞,使得消息在到達(dá)傳輸層前就要提前編碼,為了保持這種隔離也增加復(fù)制的開(kāi)銷,同時(shí)對(duì)于通信異常的傳播也是不利的。

服務(wù)端

入棧方向 (傳輸層監(jiān)聽(tīng)服務(wù)作為容器,管理了編解碼器和序列化器,上層是會(huì)話管理,再上層是服務(wù)調(diào)用骨架,主要的技術(shù)點(diǎn)有:網(wǎng)絡(luò)io模型與線程模型,服務(wù)端對(duì)象生命周期管理,異步處理及線程調(diào)度,以及自動(dòng)注冊(cè)動(dòng)態(tài)調(diào)用的簡(jiǎn)單技巧)

1)傳輸層

通過(guò)委托的解碼器和和反序列化器得到應(yīng)用層可處理的內(nèi)存消息,這個(gè)解碼的過(guò)程通常還受到網(wǎng)絡(luò)編程的線程模型的影響,使其處在不同的線程中運(yùn)行。

2)會(huì)話管理層

會(huì)話維護(hù),身份鑒權(quán)。

  1. 服務(wù)骨架

動(dòng)態(tài)調(diào)用是個(gè)基礎(chǔ),java用反射實(shí)現(xiàn)比較簡(jiǎn)單。交互對(duì)象存根維護(hù),調(diào)用執(zhí)行線程調(diào)度管理。

RPC的幾個(gè)關(guān)鍵

  • 代碼分層要合理特別是層次順,依賴關(guān)系。
  • 動(dòng)態(tài)代理技術(shù) (客戶端存根,服務(wù)端注冊(cè)與處理請(qǐng)求時(shí)的動(dòng)態(tài)調(diào)用)
  • 網(wǎng)絡(luò)編程技術(shù)
    io模型與零拷貝
    連接管理與C10M
    時(shí)間輪盤定時(shí)器
    緩沖區(qū)管理與內(nèi)存池伙伴分配與引用計(jì)數(shù)
    線程模型(reactor、proactor、leader-follower、half-sync half-async)
  • 多線程與異步技術(shù)
    調(diào)度策略與異步上下文管理、協(xié)程等
  • 序列化技術(shù)
    兼容性、編解碼性能、網(wǎng)絡(luò)消耗、可讀性
  • 應(yīng)用層協(xié)議頭設(shè)計(jì)
    兼容性、伸縮性、隔離性、完備性、效率
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容