誰能用通俗的語言解釋一下什麼是 RPC 框架?

時間 2021-05-06 06:27:03

1樓:你丫才碼農

RPC(Remote Procedure Call Protocol)遠端過程呼叫協議。乙個通俗的描述是:客戶端在不知道呼叫細節的情況下,呼叫存在於遠端計算機上的某個物件,就像呼叫本地應用程式中的物件一樣。

比較正式的描述是:一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。

那麼我們可以總結出幾個要點:

RPC是協議:既然是協議就只是一套規範,那麼就需要有人遵循這套規範來進行實現。

目前典型的RPC實現包括:Dubbo、Thrift、GRPC、Hetty等。這裡要說明一下,目前技術的發展趨勢來看,實現了RPC協議的應用工具往往都會附加其他重要功能。

網路協議和網路IO模型對其透明:既然RPC的客戶端認為自己是在呼叫本地物件。那麼傳輸層使用的是TCP/UDP還是HTTP協議,又或者是一些其他的網路協議它就不需要關心了。

既然網路協議對其透明,那麼呼叫過程中,使用的是哪一種網路IO模型呼叫者也不需要關心。

資訊格式對其透明:我們知道在本地應用程式中,對於某個物件的呼叫需要傳遞一些引數,並且會返回乙個呼叫結果。

至於被呼叫的物件內部是如何使用這些引數,並計算出處理結果的,呼叫方是不需要關心的。那麼對於遠端呼叫來說,這些引數會以某種資訊格式傳遞給網路上的另外一台計算機,這個資訊格式是怎樣構成的,呼叫方是不需要關心的。

應該有跨語言能力:為什麼這樣說呢?因為呼叫方實際上也不清楚遠端伺服器的應用程式是使用什麼語言執行的。

那麼對於呼叫方來說,無論伺服器方使用的是什麼語言,本次呼叫都應該成功,並且返回值也應該按照呼叫方程式語言所能理解的形式進行描述。

從 0 開始手寫乙個 RPC 框架,輕鬆搞定!

直觀講解一下RPC呼叫和HTTP呼叫的區別

2樓:鐘濤

直接通俗的說rpc框架,是把多台不同伺服器之間的函式方法建立通訊的一種框架。拋開通訊層面,它更傾向於服務的治理,容錯,高可用

3樓:於見怪不怪

RPC,Remote Processing Calling,遠端過程呼叫。顧名思義,就是要呼叫在另乙個集群,或者另乙個計算機,或者另乙個程序中的某個方法,某個函式。

而原理就是通過某種網路協議進行通訊,而完成呼叫。

應該很通俗易懂了吧,就是說的不夠細節

4樓:sira

在分布式計算,遠端過程呼叫(英語:Remote Procedure Call,縮寫為 RPC)是乙個計算機通訊協議。該協議允許執行於一台計算機的程式呼叫另乙個位址空間(通常為乙個開放網路的一台計算機)的子程式,而程式設計師就像呼叫本地程式一樣,無需額外地為這個互動作用程式設計(無需關注細節)。

--維基百科

5樓:DamonChen

@洪春濤 的回答中,網路傳輸不是必須的,rpc的全稱是remote process call,那remote表示的是不在乙個程序內,不是本地和遠端伺服器,對應的是程序內呼叫。

6樓:邢德陽

個人理解,rpc(遠端過程呼叫)就是在原有的協議層的互相呼叫(例如httpClient)的基礎上向上一層的抽象的封裝,讓我們像呼叫本地方法一樣就把以前的事情給幹了,作為前端開發童鞋如果要在自己的業務上rpc client,一定要注意後台rpc服務框架的選擇,部分rpc框架跨語言上還有很長的路要走,坑...

7樓:晴天

通俗點講就是本地呼叫遠端介面的框架(基於網路的API呼叫) 看看python這個例子就明白哦

CodeBees/PythonRPC

8樓:樂樂

不同於其他的「請求->回答「模式(比如網頁瀏覽請求)的地方在於,RPC遠端呼叫的函式在請求到達前並未裝入伺服器記憶體,RPC呼叫請求到達伺服器後,所請求的函式裝入記憶體,函式執行後將結果返回給客戶端,然後函式從伺服器記憶體中銷毀。

9樓:長者見聞

比方說古代驛站和軍令機制吧。皇帝要想進攻敵國,軍隊又長期在外沒法直接指揮。於是皇帝可以傳送軍令,然後通過驛站傳達給前方軍隊。

軍隊再把戰鬥結果寫成戰報,通過驛站在送回到皇帝手裡。那麼這就相當於完成了一次rpc。都城裡的皇帝相當於A機器的rpc發起方,前線軍隊相當於提供打仗這一功能的B機器。

驛站機制相當於rpc框架。通過這種制度安排,皇帝可以像指揮身邊太監一樣,方便的指揮前線絕對。理論上是這樣的,實際可能比較慢,可能前線不聽指揮,可能失聯,可能有奸賊偷了皇帝的虎符,假傳軍令。

這也都是計算機裡的rpc同樣存在的問題。

10樓:皮皮蝦我們走

Netty只是RPC可能會用到的乙個環節,RPC的目的就是做到跨程序呼叫的時候就像是本地呼叫那樣。我們把乙個大的系統拆分成小系統的時候,各個系統之前通常是通過訊息互動的也就是走網路,這塊兒涉及到Netty。當然實現乙個RPC框架不僅僅只有網路,通訊協議,序列化等等都要考慮,如果還要做服務治理比如服務發現等等就更複雜了。

這裡有個RPC完整實現的小專案可以用來加深對RPC的理解,其中它用到了Netty。

kingtang/gamma

11樓:

舉個例子吧,你接到乙個任務,通常有兩種做法:

第一,調動你的聰明才智,親力親為(程式設計師)(IPC);

第二,找乙個具有這方面技能的人幫你做,哪怕是老外也行,你將省不少事(專案經理)(RPC)。

12樓:FFFF6

A機器將業務資料發給b機器,b機器執行相應的方法然後將資料返回。rpc框架大致幹三件事 1.找到目標機器,建立連線 2.

約定個協議,將引數,目標方法發過去 3. 找到對應的方法,從傳輸資料裡恢復引數,找到對應的方法執行

13樓:哎呀

RPC:Remote Procedure Call Protocol,遠端過程呼叫

使用場景:不在同乙個程序中的程式之間的呼叫(不同伺服器,或同乙個伺服器都可以涉及),說白了就是想辦法實現不通程序間都通訊,可以通過網路請求,或者共享資源的方式都可以

14樓:

各位都把簡單的事情複雜化了。。。

其實就是我把引數傳給你,你處理完之後把返回值回傳給我。

只不過雙方不在同一台機,這就是所謂的「遠端過程呼叫」,簡稱RPC。

簡單的例子,我在Google輸入http://zhihu.com

,然後Google把搜尋結果回傳給我。

沒錯,就是這麼回事。

15樓:林毅文

Netty 不是RPC框架。netty是乙個web伺服器原型。理解netty為乙個弱化的tomcat就是了。當然你用netty寫乙個rpc框架也是可以的o(╯□╰)o

RPC這東西字面意思是遠過程呼叫。作業系統層面的RPC和架構層面的RPC是不太一樣的。

架構層面的RPC我理解為對SOA的協調。比如說原來簡單粗暴的一對一訪問, 我委託RPC框架處理,有了RPC框架,可以方便比如說監控,流量控制,灰度發布等。

作業系統的RPC就讓專門的童鞋補充吧~我就不亂說了。

16樓:就想叫yoko

本質是tcp網路通訊。

概念上講是你呼叫遠端函式返回結果,最簡單的例子是呼叫add 1,2 遠端計算得出結果3返回給你。

工程角度講由於定義了很多規範,會方便很多。

17樓:

為了一些理由(遺留系統挾持,架構設計等),需要面對多系統之間的通訊問題而引入了RPC技術。

RPC框架則是打包提供了完備的核心功能和增值服務,更好的輔助開發人員實現RPC呼叫~~

我解釋的夠粗俗吧?

誰能用通俗易懂的語言解釋一下增額終身壽和年金哪個更適合30多歲的年輕人,謝謝大家

huihui1809 增額終身壽可以在年輕的時候有高額賠付的槓槓,老年的時候高現金價值轉年金或者留著傳給子女。年金就是固定的時間給固定的錢 兩個都很好,選擇哪個要看你想解決什麼問題。如果有孩子有家庭或者有其他的家庭責任,終身壽比較適合。如果純粹為養老做規劃或者一大筆錢打散一點點給子女,年金挺好。 丸...

哪位大神能用通俗的語言解釋一下伯努利分布和二項分布的區別?

伯努利分布 問 假設伯努利和他女朋友啪啪1次,懷上的概率是p,情人節那晚他倆啪啪了一次,生孩子的概率是多少?答 這要看情況的,如果她懷孕了,概率是p,沒懷上,就是1 p 寫在一起就是 伯努利試驗裡,懷孕取值為1,沒懷孕取值為0 上面這個式子叫做概率質量函式,描述的是隨機變數在各個取值上的概率 懷孕,...

誰能用簡單明瞭的語言解釋一下什麼是「時間戳」?

密信MeSign 可信時間,就拿電子郵件來說,目前普遍採用的S MIME電子郵件簽名和加密標準是不支援時間戳簽名的,但是密信認為現實世界的郵件是有郵戳的,數字世界的電子郵件也應該有郵戳,所以密信創新地在使用者郵件的數字簽名資料中附署了密信時間戳簽名,用以證明使用者傳送郵件的可信時間,而非傳統郵件的傳...