国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

既然有 HTTP 協(xié)議,為什么還要有 RPC

這篇具有很好參考價值的文章主要介紹了既然有 HTTP 協(xié)議,為什么還要有 RPC。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

既然有 HTTP 協(xié)議,為什么還要有 RPC,網(wǎng)絡(luò),http,rpc,網(wǎng)絡(luò)協(xié)議

HTTP和RPC

什么是HTTP

HTTP協(xié)議(Hyper Text Transfer Protocol),又叫做超文本傳輸協(xié)議。平時上網(wǎng)在瀏覽器上敲個網(wǎng)址就能訪問網(wǎng)頁,這里用到的就是HTTP協(xié)議。

既然有 HTTP 協(xié)議,為什么還要有 RPC,網(wǎng)絡(luò),http,rpc,網(wǎng)絡(luò)協(xié)議

什么是RPC

RPCRemote Procedure Call),又叫做遠程過程調(diào)用。它并不是一個具體的協(xié)議,而是一種調(diào)用方式。

像之前的單體時代,我們的 service 調(diào)用就是自己實現(xiàn)的方法,是本地進程內(nèi)的調(diào)用。

public User getUserById(Long id) {
	return userDao.getUserById(id); // 這叫本地調(diào)用
}

現(xiàn)在都是微服務(wù)了,根據(jù)業(yè)務(wù)模塊做了不同的拆分,像用戶的服務(wù)不用我這個小組負責(zé),我這小組只要寫訂單服務(wù)就行了。

但是我們服務(wù)需要用到用戶的信息,于是我們需要調(diào)用用戶小組的服務(wù),于是代碼變成了以下這種

public User getUserById(Long id) {
    return userConsumer.getUserById(id); // 遠程調(diào)用
}

既然有 HTTP 協(xié)議,為什么還要有 RPC,網(wǎng)絡(luò),http,rpc,網(wǎng)絡(luò)協(xié)議

我們像調(diào)用本地方法那樣去調(diào)用它,屏蔽掉一些網(wǎng)絡(luò)細節(jié),這樣用起來豈不是很方便。

值得注意的是,雖然大部分RPC協(xié)議底層使用TCP,但實際上它們不一定非得使用TCP,改用UDP或者HTTP,其實也可以做到類似的功能。

既然有RPC了,為什么還要有HTTP?

RPC 調(diào)用使用的場景更多的公司內(nèi)部的多個服務(wù)之間的通信。

服務(wù)的拆分獨立部署,那服務(wù)間的調(diào)用就必然需要網(wǎng)絡(luò)通信,用 Http的方式 調(diào)用當然可行,但是比較麻煩。

想要服務(wù)被拆分了但是使用起來還是和之前本地調(diào)用一樣方便,所以就出現(xiàn)了 RPC 框架,來屏蔽這些底層調(diào)用細節(jié),使得我們編碼上還是和之前本地調(diào)用相差不多。

HTTP 協(xié)議比較的冗余,RPC 都是內(nèi)部調(diào)用所以不需要太考慮通用性,只要公司內(nèi)部保持格式統(tǒng)一即可。

HTTP和RPC有什么區(qū)別

我們來看看RPC和HTTP區(qū)別比較明顯的幾個點。

服務(wù)發(fā)現(xiàn)

首先要向某個服務(wù)器發(fā)起請求,你得先建立連接,而建立連接的前提是,你得知道IP地址和端口。這個找到服務(wù)對應(yīng)的IP端口的過程,其實就是服務(wù)發(fā)現(xiàn)。

HTTP中,你知道服務(wù)的域名,就可以通過DNS服務(wù)去解析得到它背后的IP地址。

RPC的話,就有些區(qū)別,一般會有專門的中間服務(wù)去保存服務(wù)名和IP信息,比如consul。想要訪問某個服務(wù),就去這些中間服務(wù)去獲得IP和端口信息。

底層連接形式

以主流的HTTP1.1協(xié)議為例,其默認在建立底層TCP連接之后會一直保持這個連接(keep alive),之后的請求和響應(yīng)都會復(fù)用這條連接。

RPC,也跟HTTP類似,也是通過建立TCP長鏈接進行數(shù)據(jù)交互,但不同的地方在于,RPC協(xié)議一般還會再建個連接池,在請求量大的時候,建立多條連接放在池內(nèi),要發(fā)數(shù)據(jù)的時候就從池里取一條連接出來,用完放回去,下次再復(fù)用,可以說非常環(huán)保。

既然有 HTTP 協(xié)議,為什么還要有 RPC,網(wǎng)絡(luò),http,rpc,網(wǎng)絡(luò)協(xié)議

由于連接池有利于提升網(wǎng)絡(luò)請求性能,所以不少編程語言的網(wǎng)絡(luò)庫里都會給HTTP加個連接池,比如go就是這么干的。這一塊兩者也沒太大區(qū)別。

傳輸?shù)膬?nèi)容

基于TCP傳輸?shù)南ⅲ?strong>header是用于標記一些特殊信息、body則是放我們真正需要傳輸?shù)膬?nèi)容。

既然有 HTTP 協(xié)議,為什么還要有 RPC,網(wǎng)絡(luò),http,rpc,網(wǎng)絡(luò)協(xié)議

可以看到像header里的很多信息,其實如果我們約定好之后,就不用每次都傳輸了,比如"content-type"這個字段。

RPC,因為它定制化程度更高,可以采用體積更小的protobuf或其他序列化協(xié)議去保存結(jié)構(gòu)體數(shù)據(jù),同時也不需要像HTTP那樣考慮各種瀏覽器行為,比如302重定向跳轉(zhuǎn)什么的。因此性能也會更好一些。

既然有 HTTP 協(xié)議,為什么還要有 RPC,網(wǎng)絡(luò),http,rpc,網(wǎng)絡(luò)協(xié)議

HTTP原理

既然有 HTTP 協(xié)議,為什么還要有 RPC,網(wǎng)絡(luò),http,rpc,網(wǎng)絡(luò)協(xié)議

RPC原理

擴展

HTTP2.0在HTTP1.1的基礎(chǔ)上做了優(yōu)化,性能可能比很多RPC協(xié)議都要好。文章來源地址http://www.zghlxwxcb.cn/news/detail-698561.html

到了這里,關(guān)于既然有 HTTP 協(xié)議,為什么還要有 RPC的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 有了MySQL,為什么還要有NoSQL

    有了MySQL,為什么還要有NoSQL

    ? ? ??今日學(xué)習(xí)目標: ??MySQL和NoSQL的區(qū)別 ? 創(chuàng)作者 :林在閃閃發(fā)光 ?預(yù)計時間:30分鐘 ??個人主頁:林在閃閃發(fā)光的個人主頁 ???林在閃閃發(fā)光的個人社區(qū),歡迎你的加入:?林在閃閃發(fā)光的社區(qū) 目錄 noSQL的大概意思 理論支撐 為什么需要NoSQL 為什么NoSQL有處理超大規(guī)模

    2023年04月20日
    瀏覽(26)
  • CentOS軟件那么老為什么大家還要用它?

    作為一個專業(yè)的服務(wù)器系統(tǒng),RHEL 系統(tǒng)理論上每一個軟件包都有 RedHat 內(nèi)部的人員負責(zé)維護,這個維護包括長期(和系統(tǒng)生命周期一樣長)的開發(fā)、更新、測試、運維等。也就是說你能從 RHEL 系統(tǒng)源上獲得的每一個軟件包,出現(xiàn)問題都可以找 RedHat 負責(zé)。所以 RHEL 不可能無限制

    2024年02月01日
    瀏覽(40)
  • 為什么有了HTTP,還需要WebSocket協(xié)議?

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

    目錄 WebSocket是什么? WebSocket怎樣建立連接? WebSocket的實際用途 WebSocket 與 HTTP 的選擇 HTTP 是基于 TCP協(xié)議 的,同一時間里,客戶端和服務(wù)器只能有一方主動發(fā)數(shù)據(jù),是 半雙工通信 。 通常,打開某個網(wǎng)頁,我們每點擊一次網(wǎng)頁上的某個選項,前端就會發(fā)送一次HTTP請求,網(wǎng)站

    2024年02月11日
    瀏覽(29)
  • 數(shù)據(jù)結(jié)構(gòu)與算法這么難,為什么我們還要學(xué)習(xí)?

    提到數(shù)據(jù)結(jié)構(gòu)與算法,就一定會伴隨著諸多所謂的堅持和抱怨。同時,還有兩個詞總是出現(xiàn),一個是內(nèi)功,是對知識的定位,一個是吃透,是對自己

    2024年01月19日
    瀏覽(29)
  • HTTP協(xié)議演進:為什么說HTTP/1.1的時代已經(jīng)過去了

    HTTP協(xié)議演進:為什么說HTTP/1.1的時代已經(jīng)過去了

    前言 ??歡迎來到今天的每日一題,每日一提。昨天聊到了,HTTP 是什么。有哪些組成部分。并且最后提到了 HTTP 的一些缺點,比如:性能較低,容易導(dǎo)致網(wǎng)絡(luò)擁塞和延遲,不支持服務(wù)器推送等等。設(shè)計協(xié)議的大佬們,對這樣的缺點肯定是不能容忍的,所以 HTTP2 它來了。 什

    2023年04月17日
    瀏覽(28)
  • 云服務(wù)器那么安全穩(wěn)定,為什么大廠還要自建機房

    云服務(wù)器那么安全穩(wěn)定,為什么大廠還要自建機房

    一般來說選擇自建機房或者是云服務(wù)商要考慮的幾個問題 成本 安全性 管理 通常來說自建機房,需要自己考慮很多問題,比如 電費 網(wǎng)絡(luò) Raid 可靠性 安全性 還要計算運維的成本 似乎從哪個角度來說,自建機房都是不大劃算的。 但是為什么還有一些公司要自建機房呢? 首先

    2023年04月08日
    瀏覽(29)
  • SSL/TLS協(xié)議詳解 - https為什么比http更安全

    SSL/TLS協(xié)議詳解 - https為什么比http更安全

    SSL/TLS是世界上應(yīng)用最廣泛的密碼通信方法。比如,在網(wǎng)上商城輸入信用卡卡號時,Web瀏覽器就會使用SSL/TLS進行密碼通信。使用SSL/TLS可以對通信對象進行認證,還可以確保通信內(nèi)容的機密性。TLS相當于SSL的后續(xù)版本。 SSL (Secure Sockets Layer)安全套接層協(xié)議 :由Netscape公司開發(fā)

    2024年02月05日
    瀏覽(25)
  • 【容器架構(gòu)】你知道有 Docker 為什么還要 K8s 嗎?

    【容器架構(gòu)】你知道有 Docker 為什么還要 K8s 嗎?

    ?? 博主介紹 : 博主從事應(yīng)用安全和大數(shù)據(jù)領(lǐng)域,有8年研發(fā)經(jīng)驗,5年面試官經(jīng)驗,Java技術(shù)專家,WEB架構(gòu)師,阿里云專家博主,華為云云享專家,51CTO TOP紅人 Java知識圖譜點擊鏈接: 體系化學(xué)習(xí)Java(Java面試專題) ???? 感興趣的同學(xué)可以收藏關(guān)注下 , 不然下次找不到喲

    2024年02月16日
    瀏覽(22)
  • C++這么難,為什么我們還要用C++?C++ Core Guidelines解析給了我答案

    C++這么難,為什么我們還要用C++?C++ Core Guidelines解析給了我答案

    C++ 是一門強大而復(fù)雜的編程語言,它有其獨特的應(yīng)用場景和優(yōu)勢,盡管它可能在學(xué)習(xí)和使用上有一些挑戰(zhàn),但仍然被廣泛采用的原因有很多,盡管 C++ 有其優(yōu)勢,但它也確實有一些復(fù)雜性和潛在的陷阱,因此在選擇使用它時需要權(quán)衡。對于一些應(yīng)用場景,其他編程語言,如Py

    2024年02月09日
    瀏覽(19)
  • C——Union是什么?Union和Struct這么像,區(qū)別在哪?為什么還要創(chuàng)造出union呢?需要在哪里使用呢?

    在 C 語言中,有一種叫做 union 的變量,是用來在不同的情況下,存放不同類型和大小的對象的變量。這與結(jié)構(gòu)體 struct 很相似:結(jié)構(gòu)體是一個或多個變量的集合。 union 的聲明方式非常簡單,也與 struct 一模一樣,如下: 可以看到,唯一的不同就是結(jié)構(gòu)體中的 struct 變成了 un

    2024年02月03日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包