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

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

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

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

RPC接口和HTTP接口的區(qū)別與聯(lián)系

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-06-17 14:54 ? 次閱讀

HTTP服務(wù)

RPC接口和HTTP接口的區(qū)別與聯(lián)系

參考文獻(xiàn)

HTTP接口和RPC接口都是生產(chǎn)上常用的接口,顧名思義,HTTP接口使用基于HTTP協(xié)議的URL傳參調(diào)用,而RPC接口則基于遠(yuǎn)程過程調(diào)用。

RPC(即Remote Procedure Call,遠(yuǎn)程過程調(diào)用)和HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議),兩者前者是一種方法,后者則是一種協(xié)議。兩者都常用于實(shí)現(xiàn)服務(wù),在這個層面最本質(zhì)的區(qū)別是RPC服務(wù)主要工作在TCP協(xié)議之上(也可以在HTTP協(xié)議),而HTTP服務(wù)工作在HTTP協(xié)議之上。由于HTTP協(xié)議基于TCP協(xié)議,所以RPC服務(wù)天然比HTTP更輕量,效率更勝一籌。

兩者都是基于網(wǎng)絡(luò)實(shí)現(xiàn)的,從這一點(diǎn)上,都是基于Client/Server架構(gòu)。

RPC(Remote Procedure Call)服務(wù)

RPC服務(wù)基本架構(gòu)包含了四個核心的組件,分別是Client、Server、Clent Stub以及Server Stub。

0e1adabe-0cba-11ee-962d-dac502259ad0.png

Client (客戶端) :服務(wù)調(diào)用方。

Server(服務(wù)端) :服務(wù)提供方。

Client Stub(客戶端存根) :存放服務(wù)端的地址消息,負(fù)責(zé)將客戶端的請求參數(shù)打包成網(wǎng)絡(luò)消息,然后通過網(wǎng)絡(luò)發(fā)送給服務(wù)提供方。

Server Stub(服務(wù)端存根) :接收客戶端發(fā)送的消息,再將客戶端請求參數(shù)打包成網(wǎng)絡(luò)消息,然后通過網(wǎng)絡(luò)遠(yuǎn)程發(fā)送給服務(wù)方。

RPC效率優(yōu)勢明顯,在實(shí)際開發(fā)中,客戶端和服務(wù)端在技術(shù)方案中約定客戶端的調(diào)用參數(shù)和服務(wù)端的返回參數(shù)之后就可以各自開發(fā),任何客戶端只要按照接口定義的規(guī)范發(fā)送入?yún)⒍伎梢哉{(diào)用該RPC服務(wù),服務(wù)端也能按接口定義的規(guī)范出參返回計(jì)算結(jié)果。這樣既實(shí)現(xiàn)了客戶端和服務(wù)端之間的解耦,也使得RPC接口可以在多個項(xiàng)目中重復(fù)利用。

RPC調(diào)用分為同步方式和異步方式。同步調(diào)用即客戶端等待調(diào)用完成并返回結(jié)果;異步調(diào)用即客戶端不等待調(diào)用執(zhí)行完成返回結(jié)果,變成單向調(diào)用或者通過回調(diào)函數(shù)等待接收到返回結(jié)果的通知。

流行的RPC框架

目前流行的RPC框架有很多,下面介紹常見的三種。

gRPC: gRPC是Google公布的開源項(xiàng)目,基于HTTP2.0協(xié)議,并支持常見的眾多編程語言。HTTP 2.0協(xié)議是基于二進(jìn)制的HTTP協(xié)議的升級版本,gRPC底層使用了Netty框架。

Thrift: Thrift是Facebook的一個開源項(xiàng)目,主要是一個跨語言的服務(wù)開發(fā)框架。它有一個代碼生成器來對它所定義的IDL文件自動生成服務(wù)代碼框架。Thrift對于底層的RPC通訊都是透明的,用戶只需要對其進(jìn)行二次開發(fā)即可,省去了一系列重復(fù)的前置基礎(chǔ)開發(fā)工作。

Dubbo: Dubbo是阿里集團(tuán)開源的一個極為出名的RPC框架,在很多互聯(lián)網(wǎng)公司和企業(yè)應(yīng)用中廣泛使用。協(xié)議和序列化框架都可以插拔是及其鮮明的特色。

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro

視頻教程:https://doc.iocoder.cn/video/

HTTP服務(wù)

通過HTTP URL調(diào)用的服務(wù),瀏覽器訪問本質(zhì)上也算HTTP服務(wù),不同的是需要客戶端瀏覽器渲染服務(wù)端返回的結(jié)果。

HTTP服務(wù)開發(fā)即開發(fā)ERESTful風(fēng)格的服務(wù)接口。在接口不多、系統(tǒng)之間交互較少的情況下,是一種信息傳遞的常用通信手段。

HTTP接口的優(yōu)點(diǎn)是簡單、直接、開發(fā)方便,利用現(xiàn)成的HTTP協(xié)議進(jìn)行傳輸。在服務(wù)開發(fā)的時候,約定一個接口文檔,嚴(yán)格定義輸入和輸出,明確每一個接口的請求方法和需要的請求參數(shù)及其格式。

在內(nèi)部子系統(tǒng)較多、接口較多的情況下,RPC框架的好處就凸顯出現(xiàn)了,首先是長連接,不必每次通信都要像HTTP那樣三次握手,減少了網(wǎng)絡(luò)開銷;其次是RPC框架一般都有注冊中心,有豐富的監(jiān)控發(fā)布方法;RPC接口的發(fā)布、下線、動態(tài)擴(kuò)展等對調(diào)用方是無感知的、統(tǒng)一化的操作。

Restful

Restful web service是一種常見的rest應(yīng)用,統(tǒng)一用于命名遵循rest風(fēng)格的web服務(wù)。Restful服務(wù)是一種ROA(Resource-Oriented Architecture,面向資源的架構(gòu))。舉一個例子就可以理解了:

Restful出現(xiàn)之前的HTTP接口:

http://127.0.0.1/user/query GET 根據(jù)用戶id查詢用戶數(shù)據(jù)

http://127.0.0.1/user/save POST 新增用戶

http://127.0.0.1/user/update POST 修改用戶信息

http://127.0.0.1/user/delete GET/POST 刪除用戶信息

Restful式HTTP接口:

http://127.0.0.1/user GET 根據(jù)用戶id查詢用戶數(shù)據(jù)

http://127.0.0.1/user POST 新增用戶

http://127.0.0.1/user PUT 修改用戶信息

http://127.0.0.1/user DELETE 刪除用戶信息

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud

視頻教程:https://doc.iocoder.cn/video/

RPC接口和HTTP接口的區(qū)別與聯(lián)系

RPC接口即相當(dāng)于調(diào)用本地接口一樣調(diào)用遠(yuǎn)程服務(wù)的接口;HTTP接口是基于http協(xié)議的post接口和get接口(等等,2.0版本協(xié)議子支持更多)。

傳輸協(xié)議

RPC:可以基于TCP協(xié)議,也可以基于HTTP協(xié)議。

HTTP:基于HTTP協(xié)議。

傳輸效率

RPC:使用自定義的TCP協(xié)議,可以讓請求報文體積更小,或者使用HTTP2.0協(xié)議,也可以很好地減少報文體積,提高傳輸效率。

HTTP:如果時基于HTTP1.1的協(xié)議,請求中會包含很多無用的內(nèi)容;如果是基于HTTP2.0,那么簡單地封裝一下還是可以作為一個RPC使用的,這時標(biāo)準(zhǔn)RPC框架更多是服務(wù)治理。

性能消耗

RPC:可以基于thrift實(shí)現(xiàn)高效的二進(jìn)制傳輸

HTTP:大部分是通過json實(shí)現(xiàn)的,字節(jié)大小和序列化耗時都比thrift要更消耗性能

負(fù)載均衡

RPC:基本都自帶了負(fù)載均衡策略

HTTP:需要配置Nginx,HAProxy實(shí)現(xiàn)

服務(wù)治理(下游服務(wù)新增,重啟,下線時如何不影響上游調(diào)用者)

RPC:能做到自動通知,不影響上游

HTTP:需要事先通知,修改Nginx/HAProxy配置

RPC主要用于公司內(nèi)部服務(wù)調(diào)用,性能消耗低,傳輸效率高,服務(wù)治理方便。HTTP主要用于對外的異構(gòu)環(huán)境,瀏覽器調(diào)用,APP接口調(diào)用,第三方接口調(diào)用等等。

RPC和HTTP都可以用于實(shí)現(xiàn)遠(yuǎn)程過程調(diào)用,如何選擇?

從速度上看,RPC比HTTP更快,雖然底層都是TCP,但是http協(xié)議的信息往往比較臃腫,不過可以采用gzip壓縮

從難度上看,RPC實(shí)現(xiàn)較為復(fù)雜,http相對簡單

從靈活性上看,HTTP更勝一籌,因?yàn)樗魂P(guān)心實(shí)現(xiàn)細(xì)節(jié),跨平臺,跨語言

兩者有不同的使用場景:

如果對效率要求更高,并且開發(fā)過程使用統(tǒng)一的技術(shù)棧,那么RPC還是不錯的

如果需要更加靈活,跨語言、跨平臺,顯然HTTP更合適

再插一句,最近新興的微服務(wù)概念更加強(qiáng)調(diào)獨(dú)立、自治、靈活,而RPC限制較多。因此微服務(wù)框架中,一般都會采用HTTP的Restful服務(wù),像在公司內(nèi)部使用hsf協(xié)議,對接外部系統(tǒng)使用微服務(wù)。

責(zé)任編輯:彭菁

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

    關(guān)注

    0

    文章

    111

    瀏覽量

    11534
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1025

    瀏覽量

    35353
  • HTTP接口
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    1790

原文標(biāo)題:既然有了HTTP,為什么還要RPC?(VIP典藏版)

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    通信網(wǎng)絡(luò)技術(shù):RPC服務(wù)和HTTP服務(wù)的區(qū)別分析

    很長時間以來都沒有怎么好好搞清楚 RPC(即 Remote Procedure Call,遠(yuǎn)程過程調(diào)用)和 HTTP 調(diào)用的區(qū)別,不都是寫一個服務(wù)然后在客戶端調(diào)用么?這里請?jiān)试S我迷之一笑~Naive
    的頭像 發(fā)表于 11-26 13:52 ?2724次閱讀

    通過http使用RPC服務(wù)的方法

    通過http使用RPC服務(wù)
    發(fā)表于 02-16 07:18

    Restful 和 RPC 是什么關(guān)系與區(qū)別

    本文詳細(xì)介紹了關(guān)于Restful 和 RPC的關(guān)系與區(qū)別,詳細(xì)分析請看下文。
    的頭像 發(fā)表于 02-07 15:35 ?3.8w次閱讀
    Restful 和 <b class='flag-5'>RPC</b> 是什么關(guān)系與<b class='flag-5'>區(qū)別</b>

    端口和接口有什么區(qū)別聯(lián)系

    本文首先介紹了端口的概念、分類及作用,其次介紹了接口的概念與顯示器接口的類型,最后介紹了端口和接口區(qū)別聯(lián)系
    發(fā)表于 04-23 16:54 ?6.2w次閱讀
    端口和<b class='flag-5'>接口</b>有什么<b class='flag-5'>區(qū)別</b>和<b class='flag-5'>聯(lián)系</b>嗎

    接口測試與前端測試的區(qū)別聯(lián)系

    主要從問題出發(fā),引入接口測試的相關(guān)內(nèi)容并與前端測試進(jìn)行簡單對比,總結(jié)兩者之前的區(qū)別聯(lián)系。但該部分只交代了怎么做和如何做?并沒有解釋為什么要做?
    發(fā)表于 05-26 09:44 ?4557次閱讀
    <b class='flag-5'>接口</b>測試與前端測試的<b class='flag-5'>區(qū)別</b>與<b class='flag-5'>聯(lián)系</b>

    為什么需要RPC接口

    論復(fù)雜度,RPC框架肯定是高于簡單的HTTP接口的。但毋庸置疑,HTTP接口由于受限于HTTP協(xié)
    發(fā)表于 07-13 17:46 ?2602次閱讀

    閑聊HDMI、DVI、VGA三個接口區(qū)別聯(lián)系

    今天來聊聊一篇關(guān)于dvi接口:HDMI、DVI、VGA接口有什么聯(lián)系的文章,現(xiàn)在就為大家來簡單介紹下dvi接口:HDMI、DVI、VGA接口
    發(fā)表于 07-17 10:55 ?6149次閱讀

    總線、接口和協(xié)議的區(qū)別聯(lián)系深度解讀

    總線、接口和協(xié)議,這三個詞常常被聯(lián)系在一起,但是我們心里要明白他們的區(qū)別
    的頭像 發(fā)表于 09-01 13:49 ?2.9w次閱讀
    總線、<b class='flag-5'>接口</b>和協(xié)議的<b class='flag-5'>區(qū)別</b><b class='flag-5'>聯(lián)系</b>深度解讀

    HTTPRPC

    TCP是傳輸層的協(xié)議,而基于TCP造出來的HTTP和各類RPC協(xié)議,它們都只是定義了不同消息格式的應(yīng)用層協(xié)議而已。
    的頭像 發(fā)表于 11-23 08:54 ?931次閱讀
    <b class='flag-5'>HTTP</b>和<b class='flag-5'>RPC</b>

    HTTPRPC區(qū)別聯(lián)系

    HTTPRPC的相同點(diǎn):底層通訊都是基于socket,都可以實(shí)現(xiàn)遠(yuǎn)程調(diào)用,都可以實(shí)現(xiàn)服務(wù)調(diào)用服務(wù)。
    的頭像 發(fā)表于 11-23 08:55 ?1876次閱讀
    <b class='flag-5'>HTTP</b>和<b class='flag-5'>RPC</b>的<b class='flag-5'>區(qū)別</b>與<b class='flag-5'>聯(lián)系</b>

    RPC接口HTTP接口哪一個更好?

    HTTP接口RPC接口都是生產(chǎn)上常用的接口,顧名思義,HTTP
    發(fā)表于 06-13 09:18 ?1315次閱讀
    <b class='flag-5'>RPC</b><b class='flag-5'>接口</b>與<b class='flag-5'>HTTP</b><b class='flag-5'>接口</b>哪一個更好?

    基于Client/Server架構(gòu)的HTTP接口RPC接口

    HTTP接口RPC接口都是生產(chǎn)上常用的接口,顧名思義,HTTP
    發(fā)表于 06-13 09:18 ?761次閱讀
    基于Client/Server架構(gòu)的<b class='flag-5'>HTTP</b><b class='flag-5'>接口</b>和<b class='flag-5'>RPC</b><b class='flag-5'>接口</b>

    什么是HTTP協(xié)議?什么是RPC協(xié)議?二者如何選擇使用?

    為什么有了HTTP,還需要RPC協(xié)議呢?在進(jìn)行說明之前,首先我們需要了解什么是HTTP協(xié)議,什么是RPC協(xié)議。
    的頭像 發(fā)表于 08-11 09:25 ?2667次閱讀
    什么是<b class='flag-5'>HTTP</b>協(xié)議?什么是<b class='flag-5'>RPC</b>協(xié)議?二者如何選擇使用?

    RPC 和 REST 區(qū)別是什么

    區(qū)別呢? 有使用經(jīng)驗(yàn)的人,就會知道: 前者(RESTful)主要用于各組件之間的通信(如nova與glance的通信),或者說用于組件對外提供調(diào)用接口 而后者(RPC)則用于同一組件中各個不同模塊
    的頭像 發(fā)表于 11-02 10:40 ?3133次閱讀
    <b class='flag-5'>RPC</b> 和 REST <b class='flag-5'>區(qū)別</b>是什么

    jtag接口和swd接口區(qū)別

    jtag接口和swd接口區(qū)別 JTAG (Joint Test Action Group) 接口和 SWD (Serial Wire Debug)
    的頭像 發(fā)表于 12-07 15:29 ?6537次閱讀
    主站蜘蛛池模板: 毛片网站网址| a级毛毛片看久久| 午夜视频在线观看一区| 国产理论在线| 欧美另类bbw| 操欧美女人| 欧美视频一区二区三区四区| 91福利专区| 免费看一毛一级毛片视频| 国产手机在线| 天天干天天上| 污污视频网址| 色婷婷中文字幕| 插吧插吧综合网| 欧美性极品xxxxx| 一级特黄色毛片免费看| 精品国模| 国产乱子伦| 婷婷六月激情在线综合激情| 国产日本三级在线播放线观看 | 午夜操一操| 女的扒开尿口让男人桶爽| 日韩免费精品视频| 天天爽夜夜| 激情亚洲婷婷| 国产婷婷色一区二区三区深爱网| 亚洲天天综合| 年下攻高h好涨| 华人永久免费视频| 奇米影视777欧美在线观看| 国语一区| 成人国产在线24小时播放视频| 午夜aaaaaaaaa视频在线| 日本级毛片免费观看| 精品国产免费人成高清| 澳门色视频| 青娱乐99| 国产播放啪视频免费视频| 三级毛片在线播放| 欧美黄色录象| 天天噜噜色|