REST與RPC

公眾號(hào):程序員面試經(jīng)驗(yàn)分享(jobbible)

REST與RPC比較與應(yīng)用場(chǎng)景

REST與RPC概念

什么是REST

REST是一種架構(gòu)風(fēng)格,指的是一組架構(gòu)約束條件和原則押框。滿足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)就是 RESTful汽煮。REST規(guī)范把所有內(nèi)容都視為資源拷姿,網(wǎng)絡(luò)上一切皆資源蜗帜。

REST并沒有創(chuàng)造新的技術(shù)献汗,組件或服務(wù)敢订,只是使用Web的現(xiàn)有特征和能力。 可以完全通過HTTP協(xié)議實(shí)現(xiàn)罢吃,使用 HTTP 協(xié)議處理數(shù)據(jù)通信楚午。REST架構(gòu)對(duì)資源的操作包括獲取、創(chuàng)建尿招、修改和刪除資源的操作正好對(duì)應(yīng)HTTP協(xié)議提供的GET矾柜、POST、PUT和DELETE方法泊业。

HTTP動(dòng)詞與REST風(fēng)格CRUD對(duì)應(yīng)關(guān)系:

什么是RPC

遠(yuǎn)程方法調(diào)用把沼,就是像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法。常見RPC框架結(jié)構(gòu)圖:

RPC框架要做到的最基本的三件事:

服務(wù)端如何確定客戶端要調(diào)用的函數(shù)吁伺;

在遠(yuǎn)程調(diào)用中饮睬,客戶端和服務(wù)端分別維護(hù)一個(gè)【ID->函數(shù)】的對(duì)應(yīng)表, ID在所有進(jìn)程中都是唯一確定的篮奄±Τ睿客戶端在做遠(yuǎn)程過程調(diào)用時(shí),附上這個(gè)ID窟却,服務(wù)端通過查表昼丑,來確定客戶端需要調(diào)用的函數(shù),然后執(zhí)行相應(yīng)函數(shù)的代碼夸赫。

如何進(jìn)行序列化和反序列化菩帝;

客戶端和服務(wù)端交互時(shí)將參數(shù)或結(jié)果轉(zhuǎn)化為字節(jié)流在網(wǎng)絡(luò)中傳輸,那么數(shù)據(jù)轉(zhuǎn)化為字節(jié)流的或者將字節(jié)流轉(zhuǎn)換成能讀取的固定格式時(shí)就需要進(jìn)行序列化和反序列化茬腿,序列化和反序列化的速度也會(huì)影響遠(yuǎn)程調(diào)用的效率呼奢。

如何進(jìn)行網(wǎng)絡(luò)傳輸(選擇何種網(wǎng)絡(luò)協(xié)議);

多數(shù)RPC框架選擇TCP作為傳輸協(xié)議切平,也有部分選擇HTTP握础。如gRPC使用HTTP2。不同的協(xié)議各有利弊悴品。TCP更加高效禀综,而HTTP在實(shí)際應(yīng)用中更加的靈活简烘。

REST與RPC比較

都是網(wǎng)絡(luò)交互的協(xié)議規(guī)范。通常用于多個(gè)微服務(wù)之間的通信協(xié)議定枷。

REST RPC

通信協(xié)議 HTTP 一般使用TCP

性能 低 高

靈活度 高 低

高與低是對(duì)實(shí)現(xiàn)兩種規(guī)范框架的相對(duì)比較孤澎,但也不是絕對(duì)的,需要根據(jù)實(shí)際情況而定依鸥。

REST與RPC應(yīng)用場(chǎng)景

REST和RPC都常用于微服務(wù)架構(gòu)中亥至。

1、HTTP相對(duì)更規(guī)范贱迟,更標(biāo)準(zhǔn)姐扮,更通用,無論哪種語言都支持http協(xié)議衣吠。如果你是對(duì)外開放API茶敏,例如開放平臺(tái),外部的編程語言多種多樣缚俏,你無法拒絕對(duì)每種語言的支持惊搏,現(xiàn)在開源中間件,基本最先支持的幾個(gè)協(xié)議都包含RESTful忧换。

RPC在微服務(wù)中的利用

2恬惯、 RPC 框架作為架構(gòu)微服務(wù)化的基礎(chǔ)組件 ,它能大大降低架構(gòu)微服務(wù)化的成本亚茬,提高調(diào)用方與服務(wù)提供方的研發(fā)效率酪耳,屏蔽跨進(jìn)程調(diào)用函數(shù)(服務(wù))的各類復(fù)雜細(xì)節(jié)。讓調(diào)用方感覺就像調(diào)用本地函數(shù)一樣調(diào)用遠(yuǎn)端函數(shù)刹缝、讓服務(wù)提供方感覺就像實(shí)現(xiàn)一個(gè)本地函數(shù)一樣來實(shí)現(xiàn)服務(wù)碗暗。

最后建議

REST調(diào)用及測(cè)試都很方便,RPC就顯得有點(diǎn)繁瑣梢夯,但是RPC的效率是毋庸置疑的言疗,所以建議在多系統(tǒng)之間的內(nèi)部調(diào)用采用RPC。對(duì)外提供的服務(wù)颂砸,Rest更加合適噪奄。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市人乓,隨后出現(xiàn)的幾起案子梗醇,更是在濱河造成了極大的恐慌,老刑警劉巖撒蟀,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異温鸽,居然都是意外死亡保屯,警方通過查閱死者的電腦和手機(jī)手负,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姑尺,“玉大人竟终,你說我怎么就攤上這事∏畜” “怎么了统捶?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)柄粹。 經(jīng)常有香客問我喘鸟,道長(zhǎng),這世上最難降的妖魔是什么驻右? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任什黑,我火速辦了婚禮,結(jié)果婚禮上堪夭,老公的妹妹穿的比我還像新娘愕把。我一直安慰自己,他們只是感情好森爽,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布恨豁。 她就那樣靜靜地躺著,像睡著了一般爬迟。 火紅的嫁衣襯著肌膚如雪橘蜜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天雕旨,我揣著相機(jī)與錄音扮匠,去河邊找鬼。 笑死凡涩,一個(gè)胖子當(dāng)著我的面吹牛棒搜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播活箕,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼力麸,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了育韩?” 一聲冷哼從身側(cè)響起克蚂,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筋讨,沒想到半個(gè)月后埃叭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悉罕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浅浮。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡谎砾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布缭召,位于F島的核電站,受9級(jí)特大地震影響逆日,放射性物質(zhì)發(fā)生泄漏嵌巷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一屏富、第九天 我趴在偏房一處隱蔽的房頂上張望晴竞。 院中可真熱鬧,春花似錦狠半、人聲如沸噩死。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽已维。三九已至,卻和暖如春已日,著一層夾襖步出監(jiān)牢的瞬間垛耳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工飘千, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堂鲜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓护奈,卻偏偏與公主長(zhǎng)得像缔莲,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子霉旗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理痴奏,服務(wù)發(fā)現(xiàn),斷路器厌秒,智...
    卡卡羅2017閱讀 134,704評(píng)論 18 139
  • 本文來自作者 未聞 在 GitChat 分享的{基于 Docker 的微服務(wù)架構(gòu)實(shí)踐} 前言 基于 Docker ...
    AI喬治閱讀 7,293評(píng)論 0 71
  • 簡(jiǎn)單介紹RPC協(xié)議及常見框架读拆,對(duì)比傳統(tǒng)restful api和RPC方式的優(yōu)缺點(diǎn)。常見RPC框架鸵闪,gRPC及序列化...
    王勝廣閱讀 146,393評(píng)論 9 158
  • 意大利是一個(gè)迷人的國度檐晕,其璀璨的文化底蘊(yùn)讓意大利昂然屹立于世界藝術(shù)之巔。除了古典藝術(shù)這一文化瑰寶蚌讼,意大利還有更很多...
    意生意色閱讀 321評(píng)論 0 1
  • 總覺得該為今天留下點(diǎn)記憶,等到自己將來老去的時(shí)候也有個(gè)回憶伞矩。 五年了,想想自己曾經(jīng)還是懵懂無知的女孩夏志,如今卻已是一...
    君君屋麟麟窩閱讀 763評(píng)論 0 0