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

當(dāng)前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]每個(gè)行業(yè)都一樣,人才都是分層次的,從事技術(shù)行業(yè)的程序員們更是如此,按照技術(shù)能力分為三六九等。每個(gè)層次的人出去面試,面試官考察的方向是不一樣的。剛?cè)肼殘龅男“祝瑫柲愫芏嗷A(chǔ)性的知識,有過幾年經(jīng)驗(yàn)的程序員,會問你相關(guān)的項(xiàng)目經(jīng)歷、架構(gòu)設(shè)計(jì)。如果是行業(yè)有影響力的技術(shù)專家,不一定會問你技...

每個(gè)行業(yè)都一樣,人才都是分層次的,從事技術(shù)行業(yè)的程序員們更是如此,按照技術(shù)能力分為三六九等。


每個(gè)層次的人出去面試,面試官考察的方向是不一樣的。


剛?cè)肼殘龅男“?,會問你很多基礎(chǔ)性的知識,有過幾年經(jīng)驗(yàn)的程序員,會問你相關(guān)的項(xiàng)目經(jīng)歷、架構(gòu)設(shè)計(jì)。如果是行業(yè)有影響力的技術(shù)專家,不一定會問你技術(shù),可能就跟你聊聊行業(yè)動態(tài)、技術(shù)發(fā)展趨勢。


如果你出去面試,面試官問你,如何設(shè)計(jì)一個(gè)高并發(fā)的系統(tǒng)?


那么你就得好好回答了,為什么?


如果你確實(shí)在互聯(lián)網(wǎng)公司干過高并發(fā)系統(tǒng),經(jīng)歷過每天幾億幾十億的流量,高峰期每秒幾萬甚至幾十萬的并發(fā)的話,面試官肯定不會問你如何設(shè)計(jì)一個(gè)高并發(fā)系統(tǒng)。而是會讓你介紹下你們的項(xiàng)目,你們項(xiàng)目架構(gòu)是什么樣的?怎么部署的?部署了多少臺機(jī)器?緩存怎么用的?數(shù)據(jù)庫怎么用的?就是深挖細(xì)節(jié),你到底是如何抗下高并發(fā)的。


如果面試官問你如何設(shè)計(jì)一個(gè)高并發(fā)系統(tǒng),一定是你沒實(shí)際干過高并發(fā)系統(tǒng)。面試官看你簡歷沒什么亮點(diǎn),又有幾年工作經(jīng)驗(yàn),所以給你一個(gè)開放式的設(shè)計(jì)題,通過這個(gè)題目,了解你雖然沒有實(shí)際干過高并發(fā)系統(tǒng),但有沒有自己研究學(xué)習(xí)過,有沒有相關(guān)的知識積累。


面試官當(dāng)然是希望招個(gè)真正干過高并發(fā)的人了,但這種人很難招,所以只能退而求其次,招一個(gè)沒有實(shí)際經(jīng)驗(yàn)但有相關(guān)知識積累的人。


所以此時(shí),你必須展示出你所有關(guān)于高并發(fā)的知識了!


這種問題呢,最好不要一上來就給出最終的一套完備的高并發(fā)系統(tǒng)架構(gòu),而是不斷地演進(jìn),正常的系統(tǒng)架構(gòu)升級也是這么個(gè)過程。


比如,最開始時(shí)每秒最多10個(gè)請求,一個(gè)單體系統(tǒng)就可以抗住。


【面試題】如何設(shè)計(jì)一個(gè)高并發(fā)的系統(tǒng)?

圖1?單體系統(tǒng)


接下來10w個(gè)用戶變成100w,1000w個(gè)用戶,每秒1000個(gè)請求,你線上機(jī)器內(nèi)存開始開始感覺到緊張,使用率開始上升,cup使用率飆升。你數(shù)據(jù)庫可能就扛不住了,因?yàn)閿?shù)據(jù)庫磁盤io效率開始下降,很多SQL變得很慢。


這個(gè)時(shí)候你要干的第一件事情就是系統(tǒng)拆分,把之前的單體系統(tǒng)拆分成多個(gè)系統(tǒng),數(shù)據(jù)庫也跟隨系統(tǒng)做拆分,每個(gè)系統(tǒng)使用自己的數(shù)據(jù)庫。


【面試題】如何設(shè)計(jì)一個(gè)高并發(fā)的系統(tǒng)?

圖2?系統(tǒng)拆分


單體系統(tǒng)拆分成立3個(gè)系統(tǒng),每個(gè)系統(tǒng)訪問自己獨(dú)立的數(shù)據(jù)庫,每個(gè)數(shù)據(jù)庫部署在獨(dú)立的機(jī)器上。原來一個(gè)數(shù)據(jù)庫最多可以抗1000的并發(fā),現(xiàn)在所有的資源翻了三倍,可以抗3000的并發(fā)。


假設(shè)現(xiàn)在系統(tǒng)每秒又3000個(gè)請求了,你系統(tǒng)可能又快扛不住了,這時(shí)候你怎么辦呢?用緩存。


redis緩存可以輕松的抗幾萬的并發(fā),用緩存后呢,大量的讀請求可以走緩存,很多系統(tǒng)都是讀多寫少,比如資訊系統(tǒng),3000個(gè)并發(fā)請求,緩存至少攔截掉2000個(gè)讀請求,剩下1000個(gè)寫請求走數(shù)據(jù)庫。


【面試題】如何設(shè)計(jì)一個(gè)高并發(fā)的系統(tǒng)?

圖3?增加緩存


假設(shè)現(xiàn)在用戶增長到1億用戶,每秒鐘1w請求,寫請求達(dá)到2000個(gè),數(shù)據(jù)庫又扛不住了,怎么辦呢,可以在數(shù)據(jù)庫前面加個(gè)MQ。


【面試題】如何設(shè)計(jì)一個(gè)高并發(fā)的系統(tǒng)?

圖4?增加MQ


這里MQ主要起到削峰的作用,高峰期大量的寫請求積壓在MQ中,等高峰期過了,再慢慢消費(fèi)。


接下來用戶增長到2億,每秒2w個(gè)請求,4000個(gè)寫請求。MQ就會積壓非常多的消息,導(dǎo)致很多數(shù)據(jù)很久都不能被修改掉,這是用戶不能忍受的。


單庫寫已經(jīng)達(dá)到瓶頸了,怎么辦,分庫分表啊。你可以把一臺數(shù)據(jù)庫拆分為3臺數(shù)據(jù)庫,用多個(gè)數(shù)據(jù)庫分?jǐn)倢懻埱髩毫Α?/p>【面試題】如何設(shè)計(jì)一個(gè)高并發(fā)的系統(tǒng)?

圖5 分庫分表


緩存有過期的可能,如果請求訪問的時(shí)候,緩存剛好過期了,就會導(dǎo)致讀請求直接穿透到數(shù)據(jù)庫里,所以你還可以給數(shù)據(jù)庫加上讀寫分離,讓讀請求分流到從庫去,降低對主庫的壓力。

【面試題】如何設(shè)計(jì)一個(gè)高并發(fā)的系統(tǒng)?

圖6 讀寫分離


針對搜索的話,數(shù)據(jù)量小的時(shí)候,可以走數(shù)據(jù)庫,當(dāng)數(shù)據(jù)量大了后,可以把相關(guān)的數(shù)據(jù)抽出來放到es集群里,es集群專門提供查詢服務(wù)。


es集群是分布式的,可以放幾十億的數(shù)據(jù),可以針對系統(tǒng)的數(shù)據(jù)量和搜索并發(fā),配置合適數(shù)量的機(jī)器。


【面試題】如何設(shè)計(jì)一個(gè)高并發(fā)的系統(tǒng)?

圖7 es搜索


總之,就是隨著用戶量和并發(fā)量的不斷增長,系統(tǒng)的架構(gòu)也在不斷地演進(jìn)。上面這種架構(gòu)演進(jìn)還是比較簡單的,真正復(fù)雜業(yè)務(wù)系統(tǒng)里,并不是簡單的堆一些高大上的技術(shù)或框架,其系統(tǒng)遠(yuǎn)遠(yuǎn)比上面的系統(tǒng)復(fù)雜幾十倍。


如果面試的時(shí)候,面試官問你如何設(shè)計(jì)一個(gè)高并發(fā)系統(tǒng),你可以按照上面這個(gè)思路回答。雖然你可能沒經(jīng)歷過高并發(fā)系統(tǒng),但本文如果能讓大家對這個(gè)問題多一些思考,在面試的時(shí)候,有一些系統(tǒng)性的思路和闡述,那么也就達(dá)到本文的目的了。

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