更新時間:2025-08-20 10:10:06作者:佚名
近些年,分布式和微服務架構非常流行,RPC在開發任務中的應用越來越頻繁,其重要性也日益凸顯。
今天我們探討RPC的含義是什么,探究為何要了解RPC,以及學習RPC能夠收獲哪些知識。
什么是「RPC」
RPC 全稱 Call, 的部分說明:
遠程過程調用是一種技術,它由調用方發起,調用方向目標方發送請求,目標方執行請求并返回結果,調用方接收結果。
此處核心在于「」部分,其次要關注 RPC中的R -「」。因此,該RPC的含義即為一種調用遠程執行方法的約定。我們通常對方法調用會遵循以下方式
= child.say("Hello World");
這種通常是指調用本地的方法,例如 Java 應調用同一 JVM 內的方法。
如果要將前面的代碼改為通過遠程過程調用方式使用,具體寫法會有什么不同呢?
其實是沒有的。
操作時依然遵循這種方式,配置中只需標明該方法關聯的遠程位置即可。
再舉個生活化的例子。
假如你是個招攬旅人的人,每當收集到足夠多的客人,你就會賣力地吆喝,在各種奇特的平臺上搜索,尋找各個景點的向導。后來有一天,你和路邊的許多復印店達成了合作。符合條件能夠引導相應景點的都可以在復印店「注冊」,你下次來的時候依據記錄,直接「聯系」相關的人就行,這樣會輕松很多呢。
這里我們看到兩種RPC的用形式:
直接在配置中固定寫好遠程方法的地址,請求是一步到位
配置里指定的注冊處地址,方法請求時會先去注冊處查詢方法地址,然后才進行執行
由此看來,你一定會感嘆prc是什么意思,為何不采用一個遠距離手段呢,這并不復雜,有什么值得探討的。
那我們繼續這個生活化的例子。
當你搜集了游客聯絡頻繁合作的向導后,這個人卻生病了。你該找誰呢? 你說有「替補」啊,登記簿里記滿了呢。
那好,這好多個導游里,你「選哪一個」?
你講,看,我何必管得那么細,隨便選一個打電話就行。行,這時候你就已經應用了RPC里的「負載均衡」,只是你的方法是采用「隨機」。
如果導游報名時都提交了個人影像資料和信譽等級評估,那么你不會隨便選一個,會對比照片,判斷哪個看起來更可信,哪個評級更優。這些信息都作為聯系他的參考依據。在眾多導游中,這個依據決定了他們被聯系的概率。這時候你的選擇不再是純粹碰運氣,而是依據這些參考依據來篩選。
比如說你們合作很多回,那幾個常去的地點總是分配給同幾位向導,彼此都很熟,每次帶團都指定找他們。這種情況下你的應對方法就轉變為「一致性Hash」。
后來,有向導告知,近來類似他們這樣的兼職向導,被發現主動攬活,可能會遭到處罰,下次聯系他時,少說些話。于是你們達成一項簡易約定:先報“是或否”,表明是否有空,再報“一至百”,說明你們帶領游客參觀的地點。接著再報“是或否”,表示是否能夠安排購物環節。
你會意識到,當前你們的協議中包含著編碼,也有壓縮,每個人在接收對方信息時,都必須經過你的解碼,才能還原成真實的內容。在 RPC 中也是這樣,在調用方法之前,需要將相應的參數序列化,按照規定的「格式」發送,到達后進行相應的還原,然后執行方法。
后來,你的業務規模持續擴大,某個旅游景點的導游們自發形成團隊。當你需要導游服務時,這個團隊的成員會依據既定規則自動選出最合適的人選prc是什么意思,這些導游共同構成的,就是一個「」
公司規模持續擴大之際,你組建了專門團隊,這些成員會定期與各導游團隊溝通,評估該景點是否具備合作條件,在此期間,該團隊承擔著監督職責。
(一口老血,編不下去了……)
接下來要說的是,我們為什么要學習 RPC。
為什么要學習 RPC
為何要研習 RPC 技術? 早先我們曾提及,微服務架構與分布式系統已成為普遍的開發模式,而 RPC 在這些模式中扮演著關鍵角色。掌握 RPC 知識,有助于深入理解并勝任復雜應用的設計與構建工作。
此外,RPC 包含的各種技術,能讓學習者見識更加開闊,每個領域,都值得鉆研。而鉆研技術,尤其是源代碼,又會反過來加深對 RPC 的理解,從而寫出更高質量的代碼。
學習 RPC 我們能掌握什么
我們上面的生活化例子中,提到了這些技術