您好,登錄后才能下訂單哦!
這篇文章主要講解了“RPC概念是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“RPC概念是什么”吧!
Dubbo服務是一個RPC框架,那我們首先就要先理解什么叫做RPC, Remote Procedure Call 即遠程過程調用。
遠程過程調用相對的是本地過程調用,本地過程調用就不用說了,簡單理解成本地方法調用函數即可,而遠程調用是指調用另一個地址空間(通常是共享網絡的另一臺機器上)的過程或函數。而不用程序員顯式編碼這個遠程調用的細節。即程序員無論是調用本地的還是遠程的函數,本質上編寫的調用代碼基本相同。
RPC的基本架構圖如下:
RPC框架就是圖中的client stub 和說server stub,服務間要相互調用,需要先建立連接。當客戶端調用client stub,可能需要傳遞參數,而在網絡間傳遞,需要進行序列化,序列化完全后將需要調用的消息發送給server stub,服務端收到信息后,先反序列化,然后再調用本地服務,調用完本地服務后,返回處理結果,結果也需要進行序列化,序列化完成之后再返回消息,而client stub 收到消息,也需要再次反序列化,再轉換成調用結果,這就是一個完整的RPC過程,如圖所示:
RPC 框架就是要實現像那小助手一樣的東西,目的就是讓我們使用遠程調用像本地調用一樣簡單方便,并且解決一些遠程調用會發生的一些問題 ,對于我們來說是無感知的。
在示例圖中我們也可以看出,RPC的核心模塊就是通訊,序列化。
那如果讓我們來設計一個RPC框架,我們的設計思路應該是怎么樣的呢?
首先從服務調用者開始,這是一個消費方,我們要消費一個服務,那么這種服務應該是一個接口形式的,這個接口一般是一個公用jar包來定義,當我知道需要調用什么接口時,具體的實現不需要清楚,這些都應該是框架代理來做的,我只需要帶接口和參數即可。
消費方不需要知道其中細節,不需要知道要調用那臺服務器上的服務,這個時候應該有一個注冊中心,這個注冊中心有點類似公司大樓的前臺物業,他負責指引來客人找到找入駐本棟大樓的公司,每個公司類似服務提供者,公司入駐大大樓后,將自己的樓層和門牌號告訴前臺,前臺把公司的情況貼在前臺指引,那么當有人要找到公司提供服務時,可以直接通過門牌找到想要去的公司,而這個公司搬走后,前臺物業又將此公司去掉,消費者需要的服務器是可以直接找到對應公司。
當然,如果你直接告訴了客戶你的具體位置,那么客戶可以不需要去注冊中心找你,也就是注冊中心可以不需要。
那作為服務提供者,你要告訴別人你公司能提供的服務器,去實現對應的接口 ,然后暴露出去,也就是去向注冊中心注冊自己,暴露自己所能提供的服務。 然后有消費者請求過來需要處理,提供者需要用和消費者協商好的協議來處理這個請求,然后做反序列化。
面對眾多的服務,精細化的監控和方便的運維必不可少。 這個時候我們需要監控運維 ,也就是監控中心,當然如果你要這么莽,就是不需要監控,當然也是可以的。
到此,我們能想到的架構就是如此,接下里我們就來看看dubbo設計(當然,我是通過實際架構反推出來,手動狗頭)
Dubbo 是阿里巴巴 2011年開源的一個基于 Java 的 RPC 框架,中間沉寂了一段時間,不過其他一些企業還在用 Dubbo 并自己做了擴展,比如當當網的 Dubbox,還有網易考拉的 Dubbok。
在 2018 年和 Dubbox 進行了合并,并且進入 Apache 孵化器,在 2019 年正式成為 Apache 頂級項目。
學習一門技術,如果有官網的話我們盡量從官網上學習:首先我們要知道Dubbo有哪些特性:
面向接口代理的高性能RPC調用: 提供高性能的基于代理的遠程調用能力,服務以接口為粒度,為開發者屏蔽遠程調用底層細節。
智能負載均衡: 內置多種負載均衡策略,智能感知下游節點健康狀況,顯著減少調用延遲,提高系統吞吐量。
服務自動注冊與發現: 支持多種注冊中心服務,服務實例上下線實時感知。
高度可擴展能力: 遵循微內核+插件的設計原則,所有核心能力如Protocol、Transport、Ser.........
感謝各位的閱讀,以上就是“RPC概念是什么”的內容了,經過本文的學習后,相信大家對RPC概念是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。