RPC 與 http

2.1.認識RPC

RPC盅粪,即 Remote Procedure Call(遠程過程調(diào)用)钓葫,是一個計算機通信協(xié)議。 該協(xié)議允許運行于一臺計算機的程序調(diào)用另一臺計算機的子程序票顾,而程序員無需額外地為這個交互作用編程础浮。說得通俗一點就是:A計算機提供一個服務帆调,B計算機可以像調(diào)用本地服務那樣調(diào)用A計算機的服務。

通過上面的概念豆同,我們可以知道番刊,實現(xiàn)RPC主要是做到兩點:

  • 實現(xiàn)遠程調(diào)用其他計算機的服務
    • 要實現(xiàn)遠程調(diào)用,肯定是通過網(wǎng)絡傳輸數(shù)據(jù)影锈。A程序提供服務芹务,B程序通過網(wǎng)絡將請求參數(shù)傳遞給A,A本地執(zhí)行后得到結(jié)果鸭廷,再將結(jié)果返回給B程序枣抱。這里需要關注的有兩點:
      • 1)采用何種網(wǎng)絡通訊協(xié)議?
        • 現(xiàn)在比較流行的RPC框架辆床,都會采用TCP作為底層傳輸協(xié)議
      • 2)數(shù)據(jù)傳輸?shù)母袷皆鯓樱?
        • 兩個程序進行通訊佳晶,必須約定好數(shù)據(jù)傳輸格式。就好比兩個人聊天佛吓,要用同一種語言,否則無法溝通垂攘。所以维雇,我們必須定義好請求和響應的格式。另外晒他,數(shù)據(jù)在網(wǎng)路中傳輸需要進行序列化吱型,所以還需要約定統(tǒng)一的序列化的方式。
  • 像調(diào)用本地服務一樣調(diào)用遠程服務
    • 如果僅僅是遠程調(diào)用陨仅,還不算是RPC津滞,因為RPC強調(diào)的是過程調(diào)用,調(diào)用的過程對用戶而言是應該是透明的灼伤,用戶不應該關心調(diào)用的細節(jié)触徐,可以像調(diào)用本地服務一樣調(diào)用遠程服務。所以RPC一定要對調(diào)用的過程進行封裝

RPC調(diào)用流程圖:

1525568965976.png

想要了解詳細的RPC實現(xiàn)狐赡,給大家推薦一篇文章:自己動手實現(xiàn)RPC

2.2.認識Http

Http協(xié)議:超文本傳輸協(xié)議撞鹉,是一種應用層協(xié)議。規(guī)定了網(wǎng)絡傳輸?shù)恼埱蟾袷接敝丁㈨憫袷侥癯①Y源定位和操作的方式等。但是底層采用什么網(wǎng)絡傳輸協(xié)議览祖,并沒有規(guī)定孝鹊,不過現(xiàn)在都是采用TCP協(xié)議作為底層傳輸協(xié)議。說到這里展蒂,大家可能覺得又活,Http與RPC的遠程調(diào)用非常像苔咪,都是按照某種規(guī)定好的數(shù)據(jù)格式進行網(wǎng)絡通信,有請求皇钞,有響應悼泌。沒錯,在這點來看夹界,兩者非常相似馆里,但是還是有一些細微差別。

  • RPC并沒有規(guī)定數(shù)據(jù)傳輸格式可柿,這個格式可以任意指定鸠踪,不同的RPC協(xié)議,數(shù)據(jù)格式不一定相同复斥。
  • Http中還定義了資源定位的路徑营密,RPC中并不需要
  • 最重要的一點:RPC需要滿足像調(diào)用本地服務一樣調(diào)用遠程服務,也就是對調(diào)用過程在API層面進行封裝目锭。Http協(xié)議沒有這樣的要求评汰,因此請求、響應等細節(jié)需要我們自己去實現(xiàn)痢虹。
    • 優(yōu)點:RPC方式更加透明被去,對用戶更方便。Http方式更靈活奖唯,沒有規(guī)定API和語言惨缆,跨語言、跨平臺
    • 缺點:RPC方式需要在API層面進行封裝丰捷,限制了開發(fā)的語言環(huán)境坯墨。

例如我們通過瀏覽器訪問網(wǎng)站,就是通過Http協(xié)議病往。只不過瀏覽器把請求封裝裆馒,發(fā)起請求以及接收響應猜丹,解析響應的事情都幫我們做了嫉柴。如果是不通過瀏覽器求类,那么這些事情都需要自己去完成。

1525569352313.png

2.3.如何選擇叠穆?

既然兩種方式都可以實現(xiàn)遠程調(diào)用少漆,我們該如何選擇呢?

  • 速度來看硼被,RPC要比http更快示损,雖然底層都是TCP,但是http協(xié)議的信息往往比較臃腫嚷硫,不過可以采用gzip壓縮检访。
  • 難度來看始鱼,RPC實現(xiàn)較為復雜,http相對比較簡單
  • 靈活性來看脆贵,http更勝一籌医清,因為它不關心實現(xiàn)細節(jié),跨平臺卖氨、跨語言会烙。

因此,兩者都有不同的使用場景:

  • 如果對效率要求更高筒捺,并且開發(fā)過程使用統(tǒng)一的技術(shù)棧柏腻,那么用RPC還是不錯的。
  • 如果需要更加靈活系吭,跨語言五嫂、跨平臺,顯然http更合適

那么我們該怎么選擇呢肯尺?

微服務沃缘,更加強調(diào)的是獨立、自治则吟、靈活槐臀。而RPC方式的限制較多,因此微服務框架中逾滥,一般都會采用基于Http的Rest風格服務峰档。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末败匹,一起剝皮案震驚了整個濱河市寨昙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掀亩,老刑警劉巖舔哪,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異槽棍,居然都是意外死亡捉蚤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門炼七,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缆巧,“玉大人,你說我怎么就攤上這事豌拙∩滦” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵按傅,是天一觀的道長捉超。 經(jīng)常有香客問我胧卤,道長,這世上最難降的妖魔是什么拼岳? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任枝誊,我火速辦了婚禮,結(jié)果婚禮上惜纸,老公的妹妹穿的比我還像新娘叶撒。我一直安慰自己,他們只是感情好堪簿,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布痊乾。 她就那樣靜靜地躺著,像睡著了一般椭更。 火紅的嫁衣襯著肌膚如雪哪审。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天虑瀑,我揣著相機與錄音湿滓,去河邊找鬼。 笑死舌狗,一個胖子當著我的面吹牛叽奥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痛侍,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼朝氓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了主届?” 一聲冷哼從身側(cè)響起赵哲,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎君丁,沒想到半個月后枫夺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡绘闷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年橡庞,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片印蔗。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡扒最,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出华嘹,到底是詐尸還是另有隱情吧趣,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站再菊,受9級特大地震影響爪喘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜纠拔,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一秉剑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稠诲,春花似錦侦鹏、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至劝萤,卻和暖如春渊涝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背床嫌。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工跨释, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厌处。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓鳖谈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阔涉。 傳聞我的和親對象是個殘疾皇子缆娃,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351