0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是RPC?為什么需要RPC?

阿銘linux ? 來源:lp ? 2019-04-16 12:49 ? 次閱讀

什么是RPC

RPC 全稱 Remote Procedure Call——遠(yuǎn)程過程調(diào)用。在學(xué)校學(xué)編程,我們寫一個(gè)函數(shù)都是在本地調(diào)用就行了。但是在互聯(lián)網(wǎng)公司,服務(wù)都是部署在不同服務(wù)器上的分布式系統(tǒng),如何調(diào)用呢?

RPC技術(shù)簡單說就是為了解決遠(yuǎn)程調(diào)用服務(wù)的一種技術(shù),使得調(diào)用者像調(diào)用本地服務(wù)一樣方便透明。

下圖是客戶端調(diào)用遠(yuǎn)端服務(wù)的過程:

1)客戶端client發(fā)起服務(wù)調(diào)用請求。

2)client stub 可以理解成一個(gè)代理,會將調(diào)用方法、參數(shù)按照一定格式進(jìn)行封裝,通過服務(wù)提供的地址,發(fā)起網(wǎng)絡(luò)請求。

3)消息通過網(wǎng)絡(luò)傳輸?shù)椒?wù)端。

4)server stub接受來自socket的消息

5)server stub將消息進(jìn)行解包、告訴服務(wù)端調(diào)用的哪個(gè)服務(wù),參數(shù)是什么

6)結(jié)果返回給server stub

7)sever stub把結(jié)果進(jìn)行打包交給socket

8)socket通過網(wǎng)絡(luò)傳輸消息

9)client slub 從socket拿到消息

10)client stub解包消息將結(jié)果返回給client。

一個(gè)RPC框架就是把步驟2到9都封裝起來。

為什么需要RPC

1、首先要明確一點(diǎn):RPC可以用HTTP協(xié)議實(shí)現(xiàn),并且用HTTP是建立在 TCP 之上最廣泛使用的 RPC,但是互聯(lián)網(wǎng)公司往往用自己的私有協(xié)議,比如鵝廠的JCE協(xié)議,私有協(xié)議不具備通用性為什么還要用呢?因?yàn)橄啾扔贖TTP協(xié)議,RPC采用二進(jìn)制字節(jié)碼傳輸,更加高效也更加安全。

2、現(xiàn)在業(yè)界提倡“微服務(wù)“的概念,而服務(wù)之間通信目前有兩種方式,RPC就是其中一種。RPC可以保證不同服務(wù)之間的互相調(diào)用。即使是跨語言跨平臺也不是問題,讓構(gòu)建分布式系統(tǒng)更加容易。

3、RPC框架都會有服務(wù)降級、流量控制的功能,保證服務(wù)的高可用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 互聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    54

    文章

    11155

    瀏覽量

    103304
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    9160

    瀏覽量

    85419
  • RPC
    RPC
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

    11536

原文標(biāo)題:RPC協(xié)議了解一下

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    HarmonyOS跨進(jìn)程通信—IPC與RPC通信開發(fā)

    使用Binder驅(qū)動(dòng),用于設(shè)備內(nèi)的跨進(jìn)程通信,后者使用軟總線驅(qū)動(dòng),用于跨設(shè)備跨進(jìn)程通信。需要跨進(jìn)程通信的原因是因?yàn)槊總€(gè)進(jìn)程都有自己獨(dú)立的資源和內(nèi)存空間,其他進(jìn)程不能隨意訪問不同進(jìn)程的內(nèi)存和資源,IPC/RPC
    的頭像 發(fā)表于 02-02 17:47 ?1286次閱讀
    HarmonyOS跨進(jìn)程通信—IPC與<b class='flag-5'>RPC</b>通信開發(fā)

    TSMaster RPC 基礎(chǔ)入門:編程指導(dǎo)和使用說明

    介紹RPC模塊前,我們先淺聊一下RPC的相關(guān)說明,以及在什么樣的情況下需要了解本文。1.RPC說明遠(yuǎn)程過程調(diào)用(RPC,RemoteProc
    的頭像 發(fā)表于 07-13 08:21 ?868次閱讀
    TSMaster <b class='flag-5'>RPC</b> 基礎(chǔ)入門:編程指導(dǎo)和使用說明

    Linux rpc編程過程

    通過rpcgen的man手冊看到此工具的作用是把RPC源程序編譯成C語言源程序,從而輕松實(shí)現(xiàn)遠(yuǎn)程過程調(diào)用。
    發(fā)表于 07-24 07:25

    RPC的結(jié)構(gòu)原理是什么?

    遠(yuǎn)程過程調(diào)用(RPC)是一個(gè)協(xié)議,程序可以使用這個(gè)協(xié)議請求網(wǎng)絡(luò)中另一臺計(jì)算機(jī)上某程序的服務(wù)而不需知道網(wǎng)絡(luò)細(xì)節(jié)。(過程調(diào)用有時(shí)也稱作函數(shù)調(diào)用,或子例行程序調(diào)用。)RPC使用client/server模型。請求程序是client,而服務(wù)提供程序則為server。
    發(fā)表于 10-12 10:43

    直連設(shè)備怎么rpc雙向控制

    Thing***oard提供非常強(qiáng)大的可視化部件,除了圖表、地圖車聯(lián)網(wǎng)外,還有控制部件,通過mqtt rpc可以輕松實(shí)現(xiàn)平臺 -- 設(shè)備端 設(shè)備到平臺雙向數(shù)據(jù)傳輸及控制。Thingboard 連接
    發(fā)表于 07-12 06:55

    RPC是什么

    RPC是什么?RabbitMQ又是什么?
    發(fā)表于 10-08 09:24

    什么是RPC

    什么是RPC   英文原義:Remote Procedure Call Protocol 中文釋義:(RFC-1831)遠(yuǎn)過程調(diào)用協(xié)議 注  解:一種通過
    發(fā)表于 02-23 11:48 ?914次閱讀

    Restful 和 RPC 是什么關(guān)系與區(qū)別

    本文詳細(xì)介紹了關(guān)于Restful 和 RPC的關(guān)系與區(qū)別,詳細(xì)分析請看下文。
    的頭像 發(fā)表于 02-07 15:35 ?3.8w次閱讀
    Restful 和 <b class='flag-5'>RPC</b> 是什么關(guān)系與區(qū)別

    為什么需要RPC接口

    論復(fù)雜度,RPC框架肯定是高于簡單的HTTP接口的。但毋庸置疑,HTTP接口由于受限于HTTP協(xié)議,需要帶HTTP請求頭,導(dǎo)致傳輸起來效率或者說安全性不如RPC。
    發(fā)表于 07-13 17:46 ?2603次閱讀

    HTTP和RPC

    TCP是傳輸層的協(xié)議,而基于TCP造出來的HTTP和各類RPC協(xié)議,它們都只是定義了不同消息格式的應(yīng)用層協(xié)議而已。
    的頭像 發(fā)表于 11-23 08:54 ?933次閱讀
    HTTP和<b class='flag-5'>RPC</b>

    RPC接口和HTTP接口的區(qū)別與聯(lián)系

    ? HTTP服務(wù) RPC接口和HTTP接口的區(qū)別與聯(lián)系 參考文獻(xiàn) ? HTTP接口和RPC接口都是生產(chǎn)上常用的接口,顧名思義,HTTP接口使用基于HTTP協(xié)議的URL傳參調(diào)用,而RPC接口則
    的頭像 發(fā)表于 06-17 14:54 ?1879次閱讀
    <b class='flag-5'>RPC</b>接口和HTTP接口的區(qū)別與聯(lián)系

    什么是HTTP協(xié)議?什么是RPC協(xié)議?二者如何選擇使用?

    為什么有了HTTP,還需要RPC協(xié)議呢?在進(jìn)行說明之前,首先我們需要了解什么是HTTP協(xié)議,什么是RPC協(xié)議。
    的頭像 發(fā)表于 08-11 09:25 ?2667次閱讀
    什么是HTTP協(xié)議?什么是<b class='flag-5'>RPC</b>協(xié)議?二者如何選擇使用?

    RPC 和 REST 區(qū)別是什么

    01. 既 REST ,何 RPC ? 在 OpenStack 里的進(jìn)程間通信方式主要有兩種,一種是基于HTTP協(xié)議的RESTFul API方式,另一種則是RPC調(diào)用。 那么這兩種方式在應(yīng)用場景上有
    的頭像 發(fā)表于 11-02 10:40 ?3134次閱讀
    <b class='flag-5'>RPC</b> 和 REST 區(qū)別是什么

    鴻蒙開發(fā)通信與連接:ohos.rpc RPC通信

    本模塊提供進(jìn)程間通信能力,包括設(shè)備內(nèi)的進(jìn)程間通信(IPC)和設(shè)備間的進(jìn)程間通信(RPC),前者基于Binder驅(qū)動(dòng),后者基于軟總線驅(qū)動(dòng)。
    的頭像 發(fā)表于 06-21 09:40 ?545次閱讀
    鴻蒙開發(fā)通信與連接:ohos.<b class='flag-5'>rpc</b> <b class='flag-5'>RPC</b>通信

    Dubbo源碼淺析(一)—RPC框架與Dubbo

    一、什么是RPC 1.1 RPC概念 RPC,Remote Procedure Call 即遠(yuǎn)程過程調(diào)用,與之相對的是本地服務(wù)調(diào)用,即LPC(Local Procedure Call)。本地服務(wù)調(diào)用
    的頭像 發(fā)表于 08-16 15:18 ?740次閱讀
    Dubbo源碼淺析(一)—<b class='flag-5'>RPC</b>框架與Dubbo