在進(jìn)行說明之前,首先我們需要了解什么是HTTP協(xié)議,什么是RPC協(xié)議。
HTTP是一種廣泛使用的網(wǎng)絡(luò)傳輸協(xié)議,HTTP協(xié)議定義了客戶端(如瀏覽器,手機(jī)用戶APP等)和服務(wù)器(網(wǎng)站等提供服務(wù)的,服務(wù)端)之間的通信格式,和通信方法,它是基于請(qǐng)求-響應(yīng)這樣一種通信模型,即服務(wù)端根據(jù)請(qǐng)求返回一個(gè)響應(yīng),在請(qǐng)求和響應(yīng)中,都包含了兩端(客戶端,服務(wù)端)之間進(jìn)行交互的一些信息,如方法、頭部、正文等。
圖1 HTTP交互基本流程圖
HTTP協(xié)議具有很多優(yōu)點(diǎn),HTTP傳輸協(xié)議支持多種數(shù)據(jù)格式和編碼方式,可以實(shí)現(xiàn)跨平臺(tái)和跨語言的通信、通信簡單、靈活、易于擴(kuò)展。但是同時(shí)HTTP協(xié)議也有一些缺點(diǎn):
1) HTTP傳輸協(xié)議是無狀態(tài)的,每次請(qǐng)求都需要重新建立連接,這會(huì)增加網(wǎng)絡(luò)開銷和延遲。
2) HTTP傳輸協(xié)議的數(shù)據(jù)傳輸是基于文本的,這會(huì)導(dǎo)致數(shù)據(jù)量較大,解析效率較低。
3) HTTP傳輸協(xié)議的安全性較差,容易受到中間人攻擊、重放攻擊等。
4) HTTP傳輸協(xié)議的語義較弱,只能表達(dá)基本的增刪改查操作,不能滿足復(fù)雜的業(yè)務(wù)邏輯。
RPC即Remote Procedure Call遠(yuǎn)程程序調(diào)用,是一種遠(yuǎn)程過程調(diào)用協(xié)議,它允許客戶端像調(diào)用本地函數(shù)一樣調(diào)用遠(yuǎn)程服務(wù)器上的函數(shù)。
圖2 RPC協(xié)議交互流程
RPC協(xié)議的優(yōu)點(diǎn)是高效、強(qiáng)大、易于使用,但是它也有一些缺點(diǎn),比如:
1) RPC協(xié)議是有狀態(tài)的,需要維護(hù)客戶端和服務(wù)器之間的連接狀態(tài),這會(huì)增加系統(tǒng)的復(fù)雜度和資源消耗。
2) RPC協(xié)議的數(shù)據(jù)傳輸是基于二進(jìn)制的,這會(huì)導(dǎo)致數(shù)據(jù)不易閱讀和調(diào)試。
3) RPC協(xié)議的兼容性較差,不同的RPC框架之間可能存在協(xié)議和接口的不一致性。
4) RPC協(xié)議的可擴(kuò)展性較差,難以支持動(dòng)態(tài)服務(wù)發(fā)現(xiàn)和負(fù)載均衡等功能。
綜上所述,在實(shí)際運(yùn)用中HTTP協(xié)議,RPC協(xié)議各有優(yōu)點(diǎn)缺點(diǎn),沒有絕對(duì)的好壞之分。針對(duì)不同的使用場景選擇合適的協(xié)議。比如:
1) 微服務(wù)架構(gòu)中,服務(wù)之間需要頻繁地進(jìn)行內(nèi)部調(diào)用,RPC協(xié)議可以提供更高的性能和可靠性。
2) 分布式計(jì)算中,需要將大量的計(jì)算任務(wù)分發(fā)到不同的節(jié)點(diǎn)上執(zhí)行,RPC協(xié)議可以實(shí)現(xiàn)更靈活的負(fù)載均衡和容錯(cuò)機(jī)制。
3) 實(shí)時(shí)通信中,需要實(shí)現(xiàn)低延遲和高并發(fā)的數(shù)據(jù)交換,RPC協(xié)議可以支持多種傳輸協(xié)議和通信模式。
4) 而假如你需要實(shí)現(xiàn)跨平臺(tái)和跨語言的通信,或者需要支持多種數(shù)據(jù)格式和編碼方式,或者需要利用現(xiàn)有的HTTP協(xié)議基礎(chǔ)設(shè)施和工具,可以選擇HTTP協(xié)議。
當(dāng)然這樣不是絕對(duì)固定的組合,也可以結(jié)合兩個(gè)協(xié)議來實(shí)現(xiàn)更好的網(wǎng)絡(luò),例如:
1) 我們可以在HTTP協(xié)議上封裝RPC協(xié)議,使得RPC協(xié)議請(qǐng)求可以通過HTTP代理或者網(wǎng)關(guān)來轉(zhuǎn)發(fā)和處理。
2) 我們可以在RPC協(xié)議上使用HTTP協(xié)議作為傳輸層,使得RPC協(xié)議請(qǐng)求可以利用HTTP的特性來實(shí)現(xiàn)緩存、壓縮、加密等功能。
所以總的來說,RPC的出現(xiàn)是為了應(yīng)對(duì)HTTP協(xié)議滿足不了的對(duì)性能有所要求的網(wǎng)絡(luò)場景。它們并不是互斥的,而是可以根據(jù)不同的場景和需求進(jìn)行選擇和組合的。
今天的分享就到這里啦,億佰特人每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的官網(wǎng)http://hivx.cn/進(jìn)行了解,還有客服小姐姐在線答疑哦!