日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 架構(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?

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

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

面完試之后我回去問了同事相同的問題,我發(fā)現(xià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ī)定先寫頭、再寫尾。

你要是先寫尾,再寫頭計算機就認不出來了。

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

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

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

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

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

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

HTTP 和 RPC 的關(guān)系

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

而 RPC 則是遠程調(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ù)不用我這個小組負責,我這小組只要寫訂單服務(wù)就行了。

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

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

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

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

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

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

可以看到 RPC 就是通過網(wǎng)絡(luò)進行遠程調(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)用當然可行,但是比較麻煩。

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

所以就出現(xiàn)了 RPC 框架,來屏蔽這些底層調(diào)用細節(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)勢在于通用,大家都認可這個協(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ǔ)還是挺薄弱的。

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

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

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

你站的高才能看的遠。

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

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

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

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

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

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

長按訂閱更多精彩▼

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

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

免責聲明:本文內(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)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉