日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

李狗蛋和二狗子因为HTTP or RPC打起来了No.135

發布時間:2024/3/12 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 李狗蛋和二狗子因为HTTP or RPC打起来了No.135 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[╮(╯_╰)╭一個小故事]

從前有兩個程序員,一個叫李狗蛋一個叫二狗子,正在啟動一個 web 項目。李狗蛋說我們系統交互就用HTTP聽我的準沒錯。二狗子說,為什么我們不用RPC呢聽我的準沒錯?李狗蛋說憑什么要聽你?二狗子說那憑什么要聽你的?李狗蛋說老子說用HTTP就用HTTP老子天下第一。二狗子臉無表情說了一聲,滾。

風。

風吹。

空調風吹。

冷冽的空調風擋不住他們之間對于技術的熱情,他們。。。打起來了。

看他們打架其實我挺....挺飽的,畢竟搬了板凳吃了很多西瓜,有點撐。但他們好像吵架的前提都沒整明白,HTTP跟RPC的區別都沒整清楚。希望你們不要因為這玩意吵架了,阿彌陀佛,畢竟太多人肚子撐不好。


[╮(╯_╰)╭HTTP和RPC的區別]

HTTP,Hypertext Transfer Protocol,超文本傳輸協議,是一款網絡傳輸協議。

RPC,Remote Procedure Call,遠程方法調用,是一款服務調用方案。

一個是協議一個是方案,這兩者沒什么必然的關系,所以也沒什么可以比較的。

為什么會有人拿他們來比較呢?

是因為,現在有著 SpringCloud為首的HTTP restful 風格的調用模式,也有著grpc等這類私有協議的調用方式。所以自然而然,會有很多人從這個層次上認為,他們是同一類東西,其實并非如此。

二者本質都是希望得到服務,而被創造出來的技術。


[╮(╯_╰)╭HTTP究竟是什么]


HTTP 全名叫超文本傳輸協議,是在互聯網中用來傳輸大量信息(比如文本、聲音、視頻等)的一個協議,這個模式是C/S 模式,也就是客戶端(一般是瀏覽器)用HTTP發起請求,服務端接收到請求后同樣用HTTP響應請求。HTTP是不是互聯網本身呢?明顯不是。互聯網始于1969年美國的阿帕網,而HTTP1.0在1996年才開始使用,也是在這一年,以瀏覽器技術為基礎的我們認知的互聯網,開始蓬勃發展。一圖勝百言,我就不多介紹了。

HTTP請求交互:

一次 HTTP 請求

客戶端:你準備好我要發送了啊。

服務端:好吧你發送吧。

客戶端:你真的準備好我真的要發送了啊。

客戶端:發送請求。

服務端:響應請求。

客戶端:你準備好我要關閉了啊。

服務端:好吧你關閉吧。

服務端:我關閉連接了。

客戶端:好的我知道你關閉了。


[╮(╯_╰)╭RPC究竟是什么]

RPC 全名叫 遠程過程調用,是指在調用遠程服務的時候,用本地調用的方式,本地的處理器屏蔽了所有的網絡、異常、重試等細節,服務調用方只關注輸入值和返回的服務,相當于一個代理。之前講過一次了,不多說了。企業神奇中間件-RPC(總覽) No.97


[╮(╯_╰)╭HTTP和RPC開始PK了]

Round1

用 HTTP 可以實現 RPC 嗎? 能。不僅僅HTTP可以實現RPC,任何網絡協議都可以用來實現RPC,只要兩臺機器之間網絡是通的,用什么協議都無所謂。

用 RPC 可以實現 HTTP 嗎? 不能。HTTP 是有國際標準滴。

Round2

HTTP可以拋棄 TCP/IP 嗎?暫時不能。現在HTTP/1.1 甚至 HTTP/2.0 暫時都還是基于 TCP/IP 協議的,HTTP/3.0 有一點點可能可以解除TCP依賴。

RPC可以拋棄 TCP/IP 嗎?能。還是之前的結論,只要網絡是通的,什么TCP、UDP、甚至小眾的網絡協議都可以支持RPC的實現。

Round3

HTTP可以跨平臺跨語言嗎?天然支持。畢竟拿到就用嘛,都是文本。

RPC可以跨平臺跨語言嗎?需要一定的努力,一些私有協議會把自己的序列化和反序列化給定制化了,只能自己解析自己,比如Java 的RMI。

Round4

我能自己實現一個HTTP嗎?想得有點多。國際標準來的。

我能自己實現一個 RPC 嗎?小伙子有前途,可以的,寫一個唄。

https://github.com/CallMeDJ/BigBanana-rpc.git

Round5

HTTP快嗎?快,但是有一些頭在企業應用沒啥用。

RPC快嗎?快,基于私有協議可以把網絡傳輸冗余數據降到最低。

看這個厚重的頭..


[╮(╯_╰)╭小結]


如果你只能記住一句話,那就記住這句吧。

HTTP是網絡協議,跨平臺跨語言,結合restful開發應用協作,開發很高效,但是協議頭很重。RPC是調用方案,一般都會有私有協議,沒什么多余信息,運行很高效,但大多數rpc的遷移性并不是很好。

HTTP就是英語,能處理非常多非常廣泛的場景。RPC 就是方言,效率可能比英語高多了,但是可能有人聽不懂。


[╮(╯_╰)╭后話]

關于 HTTP 和 RPC 這個話題是在大蕉的朋友們這個群里拋出來的問題,我覺得很有價值也很好玩,因為很多人的認知里,RPC就是比HTTP快。說實話,現在 gRPC 確實比 HTTP/1.1 要更快更有效率,所以大家才會覺得 RPC 就是比HTTP 快。但其實一些實現很糟糕的RPC未必比HTTP快比如大蕉自己實現的RPC。反過來說,RPC也可以基于HTTP搭建,把 HTTP 作為基礎網絡層。所以這兩個東西并不是非此即彼的敵對關系,而是分工合作甚至相互協作的關系。

催更的小伙可以轉發給我個好看了喂!!不然我就,我就生氣。

總結

以上是生活随笔為你收集整理的李狗蛋和二狗子因为HTTP or RPC打起来了No.135的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。