在進(jìn)行說(shuō)明之前,首先我們需要了解什么是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)和跨語(yǔ)言的通信、通信簡(jiǎn)單、靈活、易于擴(kuò)展。但是同時(shí)HTTP協(xié)議也有一些缺點(diǎn):
1) HTTP傳輸協(xié)議是無(wú)狀態(tài)的,每次請(qǐng)求都需要重新建立連接,這會(huì)增加網(wǎng)絡(luò)開銷和延遲。
2) HTTP傳輸協(xié)議的數(shù)據(jù)傳輸是基于文本的,這會(huì)導(dǎo)致數(shù)據(jù)量較大,解析效率較低。
3) HTTP傳輸協(xié)議的安全性較差,容易受到中間人攻擊、重放攻擊等。
4) HTTP傳輸協(xié)議的語(yǔ)義較弱,只能表達(dá)基本的增刪改查操作,不能滿足復(fù)雜的業(yè)務(wù)邏輯。
RPC即Remote Procedure Call遠(yuǎn)程程序調(diào)用,是一種遠(yuǎn)程過(guò)程調(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ì)不同的使用場(chǎng)景選擇合適的協(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)和跨語(yǔ)言的通信,或者需要支持多種數(shù)據(jù)格式和編碼方式,或者需要利用現(xiàn)有的HTTP協(xié)議基礎(chǔ)設(shè)施和工具,可以選擇HTTP協(xié)議。
當(dāng)然這樣不是絕對(duì)固定的組合,也可以結(jié)合兩個(gè)協(xié)議來(lái)實(shí)現(xiàn)更好的網(wǎng)絡(luò),例如:
1) 我們可以在HTTP協(xié)議上封裝RPC協(xié)議,使得RPC協(xié)議請(qǐng)求可以通過(guò)HTTP代理或者網(wǎng)關(guān)來(lái)轉(zhuǎn)發(fā)和處理。
2) 我們可以在RPC協(xié)議上使用HTTP協(xié)議作為傳輸層,使得RPC協(xié)議請(qǐng)求可以利用HTTP的特性來(lái)實(shí)現(xiàn)緩存、壓縮、加密等功能。
所以總的來(lái)說(shuō),RPC的出現(xiàn)是為了應(yīng)對(duì)HTTP協(xié)議滿足不了的對(duì)性能有所要求的網(wǎng)絡(luò)場(chǎng)景。它們并不是互斥的,而是可以根據(jù)不同的場(chǎng)景和需求進(jìn)行選擇和組合的。
今天的分享就到這里啦,億佰特人每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的官網(wǎng)http:///進(jìn)行了解,還有客服小姐姐在線答疑哦!
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 南京辦事處葛經(jīng)理:17626012283
無(wú)錫辦事處劉經(jīng)理:13558641933
成都總部銷售經(jīng)理:
秦 科(無(wú)線模塊):18884314654 馮子恒(無(wú)線模塊):18828049434
蔡友銀(無(wú)線模塊):13882211021 葛宇龍(通信設(shè)備):19138800613
胡兵(外貿(mào)銷售經(jīng)理):18584911141、 sales06@ebyte.com
業(yè)務(wù)郵箱:support@cdebyte.com 全國(guó)銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號(hào)B5棟(前臺(tái)座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號(hào)