一瀑焦、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ò)程中,客戶(hù)端和服務(wù)端分別維護(hù)一個(gè)【ID->函數(shù)】的對(duì)應(yīng)表椎工,ID在所有進(jìn)程中都是唯一確定的饭于。客戶(hù)端在做遠(yuǎn)程過(guò)程調(diào)用時(shí)维蒙,附上這個(gè)ID掰吕,服務(wù)端通過(guò)查表,來(lái)確定客戶(hù)端需要調(diào)用的函數(shù)颅痊,然后執(zhí)行相應(yīng)函數(shù)的代碼殖熟。
2、如何進(jìn)行序列化和反序列化
客戶(hù)端和服務(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ù))的各類(lèi)復(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更加合適菠剩。