在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么有了HTTP,還需要RPC協(xié)議?

億佰特物聯(lián)網(wǎng)應(yīng)用專(zhuān)家 ? 2023-08-14 10:05 ? 次閱讀

為什么有了HTTP,還需要RPC協(xié)議呢?在進(jìn)行說(shuō)明之前,首先我們需要了解什么是HTTP協(xié)議,什么是RPC協(xié)議。

0ea2595c-3a47-11ee-bbcf-dac502259ad0.png

什么是HTTP協(xié)議?

HTTP是一種廣泛使用的網(wǎng)絡(luò)傳輸協(xié)議,它定義了客戶(hù)端(如瀏覽器, 手機(jī)用戶(hù)APP等)和服務(wù)器(網(wǎng)站等提供服務(wù)的,服務(wù)端)之間的通信格式和通信方法,它是基于請(qǐng)求—響應(yīng)這樣一種通信模型,即服務(wù)端根據(jù)請(qǐng)求返回一個(gè)響應(yīng),在請(qǐng)求和響應(yīng)中,都包含了兩端(客戶(hù)端和服務(wù)端)之間進(jìn)行交互的一些信息,如方法、頭部、正文等。

0eb13288-3a47-11ee-bbcf-dac502259ad0.png

圖1 HTTP交互基本流程圖


HTTP具有很多優(yōu)點(diǎn),它支持多種數(shù)據(jù)格式和編碼方式,可以實(shí)現(xiàn)跨平臺(tái)和跨語(yǔ)言的通信,通信簡(jiǎn)單、靈活、易于擴(kuò)展。但是同時(shí)它也有一些缺點(diǎn):

(1)HTTP是無(wú)狀態(tài)的,每次請(qǐng)求都需要重新建立連接,這會(huì)增加網(wǎng)絡(luò)開(kāi)銷(xiāo)和延遲。

(2)數(shù)據(jù)傳輸是基于文本的,這會(huì)導(dǎo)致數(shù)據(jù)量較大,解析效率較低。

(3)安全性較差,因此容易受到中間人攻擊、重放攻擊等。

(4)語(yǔ)義較弱,HTTP只能表達(dá)基本的增刪改查操作,不能滿(mǎn)足復(fù)雜的業(yè)務(wù)邏輯。

0ec55308-3a47-11ee-bbcf-dac502259ad0.png

什么是RPC協(xié)議?


RPC即Remote Procedure Call(遠(yuǎn)程程序調(diào)用),它是一種遠(yuǎn)程過(guò)程調(diào)用協(xié)議,它允許客戶(hù)端像調(diào)用本地函數(shù)一樣調(diào)用遠(yuǎn)程服務(wù)器上的函數(shù)。

0ed30ad4-3a47-11ee-bbcf-dac502259ad0.png

圖2 RPC協(xié)議交互流程

RPC的優(yōu)點(diǎn)是高效、強(qiáng)大、易于使用,但是它也有一些缺點(diǎn),比如:

(1)與HTTP相反,RPC是有狀態(tài)的,需要維護(hù)客戶(hù)端和服務(wù)器之間的連接狀態(tài),這會(huì)增加系統(tǒng)的復(fù)雜度和資源消耗。

(2)RPC的數(shù)據(jù)傳輸是基于二進(jìn)制的,這會(huì)導(dǎo)致數(shù)據(jù)不易閱讀和調(diào)試。

(3)RPC的兼容性較差,不同的RPC框架之間可能存在協(xié)議和接口的不一致性。

(4)RPC的可擴(kuò)展性較差,難以支持動(dòng)態(tài)服務(wù)發(fā)現(xiàn)和負(fù)載均衡等功能。

0efebf6c-3a47-11ee-bbcf-dac502259ad0.png

二者的選擇使用


基于TCP建立的HTTP和各類(lèi)RPC協(xié)議,只是定義了不同消息格式的應(yīng)用層協(xié)議。HTTP協(xié)議是超文本傳輸協(xié)議,而RPC本身并不是一個(gè)具體的協(xié)議,而是一種調(diào)用方式。

0f1db37c-3a47-11ee-bbcf-dac502259ad0.png

雖然HTTP現(xiàn)在叫超文本協(xié)議,支持音頻視頻,但HTTP設(shè)計(jì)初主要是用做展示網(wǎng)頁(yè)文本,所以它傳輸?shù)膬?nèi)容以字符串為主,內(nèi)容存在非常多的冗余。而RPC協(xié)議定制化程度更高,可以采用體積更小的protobuf或其他序列化協(xié)議去保存結(jié)構(gòu)體數(shù)據(jù),同時(shí)也不需要像HTTP那樣考慮各種瀏覽器行為,性能更好。因此在公司內(nèi)部微服務(wù)中拋棄HTTP,轉(zhuǎn)而使用RPC協(xié)議。雖然后來(lái)HTTP得到了很大的改進(jìn),但由于很多公司內(nèi)部已經(jīng)用了多年的RPC協(xié)議,基于歷史原因,一般沒(méi)有選擇更換成HTTP。

在實(shí)際運(yùn)用中,不論是HTTP還是RPC,它們都有各自的優(yōu)缺點(diǎn),沒(méi)有絕對(duì)的好壞之分。針對(duì)不同的使用場(chǎng)景選擇合適的協(xié)議。比如:

(1)在微服務(wù)架構(gòu)中,服務(wù)之間需要頻繁地進(jìn)行內(nèi)部調(diào)用,RPC可以提供更高的性能和可靠性。

(2)在分布式計(jì)算中,需要將大量的計(jì)算任務(wù)分發(fā)到不同的節(jié)點(diǎn)上執(zhí)行,RPC可以實(shí)現(xiàn)更靈活的負(fù)載均衡和容錯(cuò)機(jī)制。

(3)而在實(shí)時(shí)通信中,需要實(shí)現(xiàn)低延遲和高并發(fā)的數(shù)據(jù)交換,RPC可以支持多種傳輸協(xié)議和通信模式。

而假如你需要實(shí)現(xiàn)跨平臺(tái)和跨語(yǔ)言的通信,或者需要支持多種數(shù)據(jù)格式和編碼方式,或者需要利用現(xiàn)有的HTTP基礎(chǔ)設(shè)施和工具,可以選擇HTTP協(xié)議。

當(dāng)然這樣不是絕對(duì)固定的組合,也可以結(jié)合兩個(gè)協(xié)議來(lái)實(shí)現(xiàn)更好的網(wǎng)絡(luò),例如:

(1)我們可以在HTTP協(xié)議上封裝RPC協(xié)議,使得RPC請(qǐng)求可以通過(guò)HTTP代理或者網(wǎng)關(guān)來(lái)轉(zhuǎn)發(fā)和處理。

(2)可以在RPC協(xié)議上使用HTTP協(xié)議作為傳輸層,使得RPC請(qǐng)求可以利用HTTP的特性來(lái)實(shí)現(xiàn)緩存、壓縮、加密等功能。

所以總的來(lái)說(shuō),RPC的出現(xiàn)是為了應(yīng)對(duì)HTTP協(xié)議滿(mǎn)足不了的對(duì)性能有所要求的網(wǎng)絡(luò)場(chǎng)景。它們并不是互斥的,而是可以根據(jù)不同的場(chǎng)景和需求進(jìn)行選擇和組合的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6032

    瀏覽量

    135990
  • 協(xié)議
    +關(guān)注

    關(guān)注

    2

    文章

    602

    瀏覽量

    39223
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7565

    瀏覽量

    88775
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    505

    瀏覽量

    31222
  • RPC
    RPC
    +關(guān)注

    關(guān)注

    0

    文章

    111

    瀏覽量

    11534
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    DAC5681z從FPGA讀數(shù)據(jù),為什么還需要一個(gè)DCLKP/N呢?

    以DAC5681z為例,DAC芯片從FPGA讀數(shù)據(jù),然后按照自己的采樣速率CLKIN/CLKINC 每隔16bit轉(zhuǎn)換成1個(gè)電平值,為什么還需要一個(gè)DCLKP/N呢?
    發(fā)表于 12-11 07:52

    為什么FPGA屬于硬件,還需要搞算法?

    交流學(xué)習(xí),共同進(jìn)步。 交流問(wèn)題(一) Q:為什么FPGA屬于硬件,還需要搞算法? 剛?cè)腴T(mén)準(zhǔn)備學(xué)fpga但一開(kāi)始學(xué)的是語(yǔ)法,感覺(jué)像是電路用軟件語(yǔ)言描述出來(lái),fpga不用會(huì)pcb
    發(fā)表于 09-09 16:54

    含有內(nèi)部ESD保護(hù)的運(yùn)放,外部保護(hù)還需要加嗎?

    含有內(nèi)部ESD保護(hù)的運(yùn)放,外部保護(hù)還需要加嗎?因?yàn)榧油獠縀SD保護(hù)一定的漏電流存在, 這個(gè)會(huì)使電路失去一定的精度
    發(fā)表于 09-04 06:54

    暢玩《黑神話(huà):悟空》,除了“官配”硬件還需要注意這些......

    暢玩《黑神話(huà):悟空》,除了“官配”硬件還需要注意這些......
    的頭像 發(fā)表于 08-30 14:58 ?448次閱讀
    暢玩《黑神話(huà):悟空》,除了“官配”硬件<b class='flag-5'>還需要</b>注意這些......

    Dubbo源碼淺析(一)—RPC框架與Dubbo

    時(shí),就像調(diào)用本地過(guò)程一樣方便。 1.2 RPCHttp的關(guān)系 用一句話(huà)來(lái)總結(jié)就是: RPC是一種概念,http是一種協(xié)議,可以認(rèn)
    的頭像 發(fā)表于 08-16 15:18 ?733次閱讀
    Dubbo源碼淺析(一)—<b class='flag-5'>RPC</b>框架與Dubbo

    MES、ERP,為什么還需要QMS?

    ? MES、ERP,質(zhì)量管理為什么還需要QMS? ?在制造業(yè),質(zhì)量管理始終是企業(yè)管理中永恒的主題。品質(zhì)管理要想做得更好,企業(yè)必須掌握足夠多、足夠有用的數(shù)據(jù)和信息,實(shí)現(xiàn)質(zhì)量管理信息化。很多中小企業(yè)
    的頭像 發(fā)表于 08-02 10:09 ?287次閱讀
    <b class='flag-5'>有</b><b class='flag-5'>了</b>MES、ERP,為什么<b class='flag-5'>還需要</b>QMS?

    TSMaster RPC 基礎(chǔ)入門(mén):編程指導(dǎo)和使用說(shuō)明

    介紹RPC模塊前,我們先淺聊一下RPC的相關(guān)說(shuō)明,以及在什么樣的情況下需要了解本文。1.RPC說(shuō)明遠(yuǎn)程過(guò)程調(diào)用(RPC,RemoteProc
    的頭像 發(fā)表于 07-13 08:21 ?867次閱讀
    TSMaster <b class='flag-5'>RPC</b> 基礎(chǔ)入門(mén):編程指導(dǎo)和使用說(shuō)明

    ESP-IDF Tools Offline5.0下的離線(xiàn)安裝包,為什么安裝時(shí)還需要從github中下載?

    如題 我都已經(jīng)下載的是離線(xiàn)的安裝包了為什么安裝時(shí)還需要從github中下載???? 半個(gè)小時(shí) 才下載2%
    發(fā)表于 06-13 08:14

    在freertos中,每個(gè)任務(wù)都是一個(gè)死循環(huán),那么還需要使用看門(mén)狗嗎?

    在freertos中,每個(gè)任務(wù)都是一個(gè)死循環(huán),那么還需要使用看門(mén)狗嗎?該怎么使用?
    發(fā)表于 05-07 06:55

    為何在HTTP協(xié)議之外,我們還需要RPC協(xié)議

    字節(jié)流可以理解為一個(gè)雙向的通道里流淌的數(shù)據(jù),這個(gè)數(shù)據(jù)其實(shí)就是我們常說(shuō)的二進(jìn)制數(shù)據(jù),簡(jiǎn)單來(lái)說(shuō)就是一大堆 01 串。純裸TCP收發(fā)的這些 01 串之間是沒(méi)有任何邊界的,你根本不知道到哪個(gè)地方才算一條完整消息。
    發(fā)表于 04-12 14:29 ?546次閱讀
    為何在<b class='flag-5'>HTTP</b><b class='flag-5'>協(xié)議</b>之外,我們<b class='flag-5'>還需要</b><b class='flag-5'>RPC</b><b class='flag-5'>協(xié)議</b>?

    請(qǐng)問(wèn)risc-v中斷還需要軟件保存上下文和恢復(fù)嗎?

    risc-v中斷還需要軟件保存上下文和恢復(fù)嗎?
    發(fā)表于 02-26 07:40

    RT-Thread Studio中的RT-Thread Setting中已經(jīng)軟件包管理和組件服務(wù)管理了,那還需要env工具嗎?

    RT-Thread Studio中的RT-Thread Setting中已經(jīng)軟件包管理和組件服務(wù)管理了,那還需要env工具嗎,如果也使用env工具那不是和RT-Thread Setting中的管理沖突
    發(fā)表于 02-23 07:36

    #2024,立Flag了嘛? #學(xué)習(xí)spinal HDL還需要學(xué)習(xí)對(duì)應(yīng)的Scala語(yǔ)言

    學(xué)習(xí)spinal HDL還需要學(xué)習(xí)對(duì)應(yīng)的Scala語(yǔ)言,但是spinal HDL直接貼近硬件編程,不知道對(duì)于學(xué)習(xí)spinal HDL什么好的建議?
    發(fā)表于 01-21 11:11

    aducm410微處理器還需要接外部晶振和復(fù)位電路嗎?

    aducm410微處理器還需要接外部晶振和復(fù)位電路嗎?
    發(fā)表于 01-11 07:23

    1200控制V90PN,極限開(kāi)關(guān)接到伺服上,那PLC這邊還需要組嗎?

    1200控制V90PN,極限開(kāi)關(guān)接到伺服上,那PLC這邊還需要組嗎 接到V90上,假如絕對(duì)定位碰到極限,伺服自己會(huì)停止嗎
    發(fā)表于 01-09 08:26
    主站蜘蛛池模板: 日本不卡毛片一二三四| 亚洲天堂亚洲天堂| 免费观看欧美成人1314色| 毛片在线不卡| 午夜啪啪网站| 性欧美丨18一19| 国产毛片农村妇女aa板| 成人在线一区二区| 亚洲狠狠综合久久| 成人三级视频| 欧美三级黄| 在线不卡一区| 国产一二三区在线观看| 国产亚洲精品久久久久久牛牛| 91九色蝌蚪在线| 国产亚洲视频在线| www.免费| 泰剧天堂| 国产亚洲美女| 202z国产高清日本在线播放| 性色成人网| 4tube高清性欧美| 久久大综合| 性孕妇洗澡video国产| 国产精品美女视频| 欧美成人全部免费观看1314色| 色猫av| 天天插天天射天天干| 国产午夜精品久久久久免费视| 久久99热狠狠色精品一区| 国产综合在线播放| 天堂bt资源新版在线| 亚洲精品综合网在线8050影院| 性国产精品| 狠狠色狠狠色| 久久免费视频2| 亚洲国产成人在人网站天堂| aa毛片| 国产精品久久久久久吹潮 | 国产在线视频资源| 午夜黄|