www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]身為 Java Web開發(fā)我發(fā)現(xiàn)很多人一些Web基礎(chǔ)問題都答不上來。上周我面試了一個三年經(jīng)驗的小伙子,一開始我問他 HTTP/1、HTTP/2相關(guān)的他到是能答點東西出來。后來我問他:你知道HTTP的本質(zhì)是什么嗎? 他支支吾吾答不出來……

身為 ?Java Web 開發(fā)我發(fā)現(xiàn)很多人一些 Web 基礎(chǔ)問題都答不上來。

上周我面試了一個三年經(jīng)驗的小伙子,一開始我問他 HTTP/1、HTTP/2相關(guān)的他到是能答點東西出來。

后來我問他:你知道 HTTP 的本質(zhì)是什么嗎?

他支支吾吾答不出來。

我接著問那你知道什么是 HTTP 和 RPC 的關(guān)系嗎?

為什么要有 RPC?

他眼睛盯著桌上的水,額了半天。

最后我跟他說回家等通知吧(當(dāng)然還有很多都答不上來哈,多方位我都問了)。

面完試之后我回去問了同事相同的問題,我發(fā)現(xiàn)答的也不夠好,有些地方有點混淆。

所以今兒我就整理一波來說說這類問題,相信看完文章之后你會有進一步的認(rèn)識。

上周我面了個三年Javaer,這幾個問題都沒答出來

HTTP 的本質(zhì)

首先你要明確 HTTP 是一個協(xié)議,是一個超文本傳輸協(xié)議。

它基于 TCP/IP 來傳輸文本、圖片、視頻、音頻等。

重點來了。

HTTP 不提供數(shù)據(jù)包的傳輸功能,也就是數(shù)據(jù)包從瀏覽器到服務(wù)端再來回的傳輸和它沒關(guān)系。

這是 TCP/IP 干的。

那 HTTP 有啥用?我們來分析一波。

我們上網(wǎng)要么就是獲取一些信息來看,要么就是修改一些信息。

比如你用瀏覽器刷微博就是獲取信息,發(fā)微博就是修改信息。

所以說瀏覽器需要告知服務(wù)器它需要什么,這次的請求是要獲取哪些信息?發(fā)怎么樣的微博。

這就涉及到瀏覽器和服務(wù)器之間的通信交互。

交互就需要一種格式。

像你我之間的談話就用中文,你要突然換成俄語我聽不懂那不就 GG 了。

所以說 HTTP 它規(guī)定了一種格式,一種通信格式,大家都用這個格式來交談。

這樣不論你是什么服務(wù)器、什么瀏覽器都能順利的交流,減少交互的成本

就像全世界如果都講中文,那我們不就不需要學(xué)英文了,那不就較少交互的成本了。

不像現(xiàn)在我們還得學(xué)英文,不然就看不懂文檔等等。

萬一之后俄語又起來了,咱還得對接俄文,這交互成本是不是就上來了。

而網(wǎng)絡(luò)世界還好,咱們現(xiàn)在的 Web 交互基本上就是 HTTP 了。

其實 HTTP 協(xié)議的格式很像我們信封,有個固定的格式。

上周我面了個三年Javaer,這幾個問題都沒答出來

左上角寫郵編,右上角貼郵票,然后地址姓名啥的依次來。

因為計算機是很死板的,不像我們?nèi)艘粯佑幸环N立體掃描感,所以要規(guī)定先寫頭、再寫尾。

你要是先寫尾,再寫頭計算機就認(rèn)不出來了。

所以 HTTP 就規(guī)定了請求先搞請求行、再搞請求報頭、再搞請求體。

響應(yīng)就狀態(tài)行、響應(yīng)報頭、響應(yīng)體。

上周我面了個三年Javaer,這幾個問題都沒答出來

所以 HTTP 的本質(zhì)是什么?

就是客戶端和服務(wù)端約定好的一種通信格式

對 HTTP 想有多的認(rèn)識可以看我之前的文章 從 1950 年開始說起,帶你看 HTTP 的演進之路

HTTP 和 RPC 的關(guān)系

HTTP 和 RPC 其實是兩個維度的東西, HTTP 指的是通信協(xié)議。

而 RPC 則是遠(yuǎn)程調(diào)用,其對應(yīng)的是本地調(diào)用。

RPC 的通信可以用 HTTP 協(xié)議,也可以自定義協(xié)議,是不做約束的。

像之前的單體時代,我們的 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ù)不用我這個小組負(fù)責(zé),我這小組只要寫訂單服務(wù)就行了。

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

????public?User?getUserById(Long?id)?{
???????return?userConsumer.getUserById(id);?//?這是遠(yuǎn)程調(diào)用,邏輯是用戶小組的服務(wù)實現(xiàn)的。
????}

可能還有些小伙伴不太清楚,再來看個圖。

上周我面了個三年Javaer,這幾個問題都沒答出來

把之前的用戶實現(xiàn)拆分出來弄了一個用戶服務(wù),訂單相關(guān)的也拆成了訂單服務(wù),都單獨部署。

這樣訂單相關(guān)的服務(wù)要獲取用戶的信息就需要遠(yuǎn)程調(diào)用了。

可以看到 RPC 就是通過網(wǎng)絡(luò)進行遠(yuǎn)程調(diào)用,訂單服務(wù)其實就是客戶端,而用戶服務(wù)是服務(wù)端。

這又涉及到交互了,所以也需要約定一個格式,至于要不要用 HTTP 這個格式,就是大家自己看著辦。

至此相信你對 HTTP 是啥也清楚了。

RPC 和 HTTP 的之間的關(guān)系也清楚了。

下次再也不怕被面試官問這個了。

那為什么要有 RPC?

可能你常聽到什么什么之間是 RPC 調(diào)用的,那你有沒有想過為什么要 RPC, 我們直接 WebClient HTTP 調(diào)用不行么?

其實 RPC 調(diào)用是因為服務(wù)的拆分,或者本身公司內(nèi)部的多個服務(wù)之間的通信。

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

我們想即使服務(wù)被拆分了但是使用起來還是和之前本地調(diào)用一樣方便

所以就出現(xiàn)了 RPC 框架,來屏蔽這些底層調(diào)用細(xì)節(jié),使得我們編碼上還是和之前本地調(diào)用相差不多。

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

所以可以做各種定制化的協(xié)議來使得通信更高效。

比如規(guī)定 yes 代表 yes的練級攻略,你看是不是更高效了,少傳輸?shù)?5 個字。

就像特殊行動的暗號,高效簡潔!

所以公司內(nèi)部服務(wù)的調(diào)用一般都用 RPC,而 HTTP 的優(yōu)勢在于通用,大家都認(rèn)可這個協(xié)議。

所以三方平臺提供的接口都是通過 HTTP 協(xié)議調(diào)用的。

所以現(xiàn)在知道為什么我們調(diào)用第三方都是 HTTP ,公司內(nèi)部用 RPC 了吧?

對了。

上面這段話看起來仿佛 HTTP 和 RPC 是對等關(guān)系,不過相信大家看了之前的解析心里應(yīng)該都有數(shù)了。

最后

最近幾次面試下來我發(fā)現(xiàn)挺多同學(xué)基礎(chǔ)還是挺薄弱的。

地基要牢啊,八股文得背沒錯,但是這種基本概念性的東西還是有必要清晰。

看起來好像對平時的編碼沒什么用,但是這可以認(rèn)為是一個“世界觀”。

這對于一些事物的判斷和認(rèn)知有很重要的意義。

你站的高才能看的遠(yuǎn)。

對了,理解了 HTTP 的本質(zhì)相信你對 RESTful 風(fēng)格也應(yīng)該會有更深一層的理解。

HTTP 它是協(xié)議,不是運輸通道。

特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

上周我面了個三年Javaer,這幾個問題都沒答出來

上周我面了個三年Javaer,這幾個問題都沒答出來

上周我面了個三年Javaer,這幾個問題都沒答出來

長按訂閱更多精彩▼

上周我面了個三年Javaer,這幾個問題都沒答出來

如有收獲,點個在看,誠摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉