REST與RPC的簡(jiǎn)單對(duì)比

一、REST:Representational State Transfer,表述性狀態(tài)轉(zhuǎn)移

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

REST并沒(méi)也創(chuàng)造新的技術(shù),組件或服務(wù),只是使用Web的現(xiàn)有特征和能力??梢酝耆ㄟ^(guò)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)詞與對(duì)應(yīng)的REST風(fēng)格的CRUD對(duì)應(yīng)關(guān)系如下:

1、POST對(duì)應(yīng)? ? ? Create(update,delete)

2、GET對(duì)應(yīng)Read

3、PUT對(duì)應(yīng)Update(create)

4、DELETE對(duì)應(yīng)Delete。

二、RPC? ?:Remote Procedure Call,遠(yuǎn)程過(guò)程調(diào)用協(xié)議

RPC框架主要做以下三件事:

1、server端如何確定client端要調(diào)用的函數(shù):

在遠(yuǎn)程調(diào)用過(guò)程中,客戶端和服務(wù)端分別維護(hù)一個(gè)【ID->函數(shù)】的對(duì)應(yīng)表,ID在所有進(jìn)程中都是唯一確定的??蛻舳嗽谧鲞h(yuǎn)程過(guò)程調(diào)用時(shí),附上這個(gè)ID,服務(wù)端通過(guò)查表,來(lái)確定客戶端需要調(diào)用的函數(shù),然后執(zhí)行相應(yīng)函數(shù)的代碼。

2、如何進(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)用的效率。

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

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

三、REST與RPC比較


四、應(yīng)用場(chǎng)景

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

1、HTTP相對(duì)更規(guī)范,更標(biāo)準(zhǔn),更通用,無(wú)論哪種語(yǔ)言都支持http協(xié)議。如果你是對(duì)外開(kāi)放API,例如開(kāi)放平臺(tái),外部的編程語(yǔ)言多種多樣,你無(wú)法拒絕對(duì)每種語(yǔ)言的支持,現(xiàn)在開(kāi)源中間件,基本最先支持的幾個(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)用方感覺(jué)就像調(diào)用本地函數(shù)一樣調(diào)用遠(yuǎn)端函數(shù)、讓服務(wù)提供方感覺(jué)就像實(shí)現(xiàn)一個(gè)本地函數(shù)一樣來(lái)實(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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 轉(zhuǎn)自:http://blog.csdn.net/kesonyk/article/details/50924489 ...
    晴天哥_王志閱讀 25,329評(píng)論 2 38
  • 斐波那契是個(gè)不起眼的意大利老頭,初見(jiàn)以為他是莊園里的園丁。遠(yuǎn)遠(yuǎn)看去,他身體瘦小,衣服破舊,彎著腰在雜物間整理東西。...
    王胡走閱讀 832評(píng)論 0 0
  • (原創(chuàng)文章,如需轉(zhuǎn)載,請(qǐng)聯(lián)系作者) 20世紀(jì)末,美國(guó)學(xué)術(shù)界權(quán)威在百年英語(yǔ)文學(xué)長(zhǎng)河中選出了一百部最優(yōu)秀的小說(shuō),其中弗...
    霆鑫閱讀 1,265評(píng)論 0 2
  • 互聯(lián)網(wǎng)時(shí)代的發(fā)展思維:行業(yè)+企業(yè)+職業(yè)能力的上升需要3個(gè)東西:新知、練習(xí)以及同輩反饋。而圈子是一個(gè)加速提升能力的地...
    丸子同學(xué)日常閱讀 763評(píng)論 0 0

友情鏈接更多精彩內(nèi)容