一個優(yōu)秀的架構(gòu)師,抽象思維能力是必不可少的,架構(gòu)師要善于“店丁解牛”,將實(shí)物概念化并歸類,比如一個大型網(wǎng)站,你能夠迅速根據(jù)業(yè)務(wù)功能的不同,將業(yè)務(wù)垂直化;
而扎實(shí)的技術(shù)功底又是架構(gòu)師能力版圖中所占比例最大的一塊,因?yàn)槌橄笏季S能力是虛的,技術(shù)能力是實(shí)的,只有做到虛實(shí)結(jié)合 ,才能夠達(dá)到“手中無劍,心中有劍”的境界:技術(shù)前瞻性是需要架構(gòu)師憑借自身經(jīng)驗(yàn)和覺預(yù)估當(dāng)前架構(gòu)的缺陷會為將來埋下哪些隱患、哪些技術(shù)問題是需要在網(wǎng)站發(fā)展到一定階段就必須重構(gòu)的、哪些技術(shù)在未來是趨勢,需要提前進(jìn)行了解和學(xué)習(xí)的領(lǐng)域知識既要求了架構(gòu)師的知識廣度,又要求了架構(gòu)師的知識深度,因?yàn)榧軜?gòu)師的技術(shù)能力不能夠僅局限在自己所擅長的那一畝三分地;
溝通交流能力其實(shí)非常重要,因?yàn)榇蠖鄶?shù)情況下,我們都是在與人而非計算機(jī)打交道,比如,我們構(gòu)建的系統(tǒng)先是給人使用的,其次才是讓計算機(jī)理解。
除此之外,業(yè)務(wù)的溝通探討、技術(shù)方案的探討等諸多事項都是人與人面對面的直接溝通交流,如果你不善于溝通,那么如何能夠讓別人明確你的用意 又如何順利開展工作呢?
架構(gòu)師的能力版圖
本書主要有五部分組成:
只需要轉(zhuǎn)發(fā)關(guān)注小編,私信小編“學(xué)習(xí)”就可以獲得!
分布式系統(tǒng)的架構(gòu)演變過程
在移動互聯(lián)網(wǎng)的浪潮中,你我正生逢其時地 受著當(dāng)下,如果你愿意做 只站在風(fēng)口上 待起飛的豬,那么請認(rèn)真地問問自己,是否已經(jīng)準(zhǔn)備好了?互聯(lián)網(wǎng)究是什么?簡而言之,互聯(lián)網(wǎng)詮釋的是 種精神,融入了高度開放、分 ,以及自由的精神。如果你想融入這個圈子,那么請務(wù)必先舍棄掉與互聯(lián)網(wǎng)精神背道而馳的陳舊觀念和思維,否則你自始至終都只會被孤立在局外。
互聯(lián)網(wǎng)悄然改變了世界,改變了人們對事務(wù)的認(rèn)知,縮短了人與人之間的距離無論你是否愿意承認(rèn),互聯(lián)網(wǎng)已經(jīng)完全影響并融入我們的生活中。我們的長輩們,也從早期對新鮮事物的排斥,變成現(xiàn)在的欣然接受,這就是互聯(lián)網(wǎng)與生俱來的魅力和魔力。
筆者的母親從來就不是 個喜歡追趕潮流的人,但是她早已智能設(shè)備從不離身,每天早上起床的第一 件事情就是拿起智能手機(jī),刷刷朋友圈、 看看時事政治、做回“吃瓜群眾”,八卦下娛樂新聞,甚至衣食住行也幾乎是通過互聯(lián)網(wǎng)這個載體鍵搞定的,如圖所示。既然互聯(lián)網(wǎng)能使我們的生活質(zhì)量更好,那就請張開雙臂緊緊擁抱它。
擁有互聯(lián)網(wǎng)的生活
大流量限流/消峰案例
天貓、淘寶這種級別的大型互聯(lián)網(wǎng)電商網(wǎng)站,主要的技術(shù)挑戰(zhàn)來自于龐大的用戶規(guī)模所帶來的大流量和高并發(fā),在“雙 11 ”、“雙 12 ”等大促場景下尤為明顯。
如果不對流量進(jìn)行合理管制,肆意放任大流量沖擊系統(tǒng),那么將導(dǎo)致 系列的問題出現(xiàn),比如一些可用的連接資源被耗盡、分布式緩存的容量被撐爆、數(shù)據(jù)庫吞吐量降低,最終必然會導(dǎo)致系統(tǒng)產(chǎn)生雪崩效應(yīng)。當(dāng)然,應(yīng)對大流量和高并發(fā)也沒有大家想象得那么復(fù)雜和神秘。
一般來說,大型互聯(lián)網(wǎng)站通常采用的做法是通過擴(kuò)容、動靜分離、緩存、服務(wù)降級及限流五種常規(guī)手段來保護(hù)系統(tǒng)的穩(wěn)定運(yùn)行。
不同的企業(yè)可能會采用不同的解決方案來應(yīng)對大流量和高并發(fā),因?yàn)椴煌瑯I(yè)務(wù)之間存在的差異性決定了不會誕生通用的解決方案,所謂條條大路通羅馬,只要能夠換取同質(zhì)性的結(jié)果,過程如何就顯得不是特別重要,這就好比如果能夠提前知道羅馬的具體位置,那么處處都是路,怎么走都行。
本章的重點(diǎn)是流量管制,只要我們能夠采用合理且有效的方式管制住用戶流量 讓其有秩序地對系統(tǒng)進(jìn)行訪問,那么無論是在平時還是在大促的時候,系統(tǒng)都能夠穩(wěn)定運(yùn)行。需要明確的是,流量管制的目的是保護(hù)系統(tǒng),讓系統(tǒng)的負(fù)載處于 個比較均衡的水位,而不是刻意為了限流而限流,否則將會嚴(yán)重影響用戶體驗(yàn),得不償失。
分布式配置管理服務(wù)案例
相信大家對配置信息都不會感到陌生,在實(shí)際的開發(fā)過程中,無論是訪問數(shù)據(jù)庫、分布式緩存系統(tǒng)、消息隊列,還是通過 Dubbo 框架實(shí)現(xiàn) RPC 調(diào)用,都需要提前配置好目標(biāo) URL 、賬號/密碼等信息,因此這類信息也被稱為配置信息。在大部分情況下,我們都會選擇將相關(guān)配置信息配置在配置文件中,當(dāng)系統(tǒng)啟動時,會從指定的目錄下進(jìn)行加載,通過獲取配置文件中的配置信息項來完成環(huán)境的初始化工作。
除此之外,我們在使用電腦進(jìn)行辦公、娛樂時,也會高頻率地與配置信息打交道,比如,通過操作系統(tǒng)的控制面板來設(shè)置顯示器的分辨率、鼠標(biāo)的雙擊速度 ,以及區(qū)域和語言設(shè)置等,這些都屬于配置信息,所以如果你告訴我你從未接觸過配置信息,那么我一定會搖搖頭對你說這不可能。
大促場景下熱點(diǎn)數(shù)據(jù)的讀/寫優(yōu)化案例
在秒殺、限時搶購這種大促場景下,由于峰值流量較大,大量的并發(fā)讀/寫操作一定會導(dǎo)致后端的存儲系統(tǒng)產(chǎn)生性能瓶頸。
前面已經(jīng)講解過,提升單機(jī)處理能力最有效的辦法就是采用集群技術(shù)對服務(wù)器進(jìn)行擴(kuò)容,只要系統(tǒng)能夠具備良好的伸縮性,那么從理論上來說,其容量便可以是無限的。
在此需要注意 ,大促場景下因熱點(diǎn)數(shù)據(jù)導(dǎo)致的單點(diǎn)瓶頸已經(jīng)不再是簡單地通過橫向擴(kuò)容就能夠順利解決的,盡管對于讀操作我們可以將熱點(diǎn)數(shù)據(jù)緩存在分布式緩存中以達(dá)到提升系統(tǒng) QPS 的目的,但是緩存系統(tǒng)的單點(diǎn)容量還是存在上限的 ,因此應(yīng)對大促場景下的峰值流量仍顯得杯水車薪。
除此之外,由于熱點(diǎn)數(shù)據(jù)的寫操作無法直接在緩存中完成,那么這必然會引起大量的線程相互競爭 nnoDB 的行鎖。并發(fā)越大時,等待的線程就越多,這會嚴(yán)重影響數(shù)據(jù)庫的 TPS ,導(dǎo)致 RT 線性上升,最終可能引發(fā)系統(tǒng)出現(xiàn)雪崩。
數(shù)據(jù)庫分庫分表案例
大型網(wǎng)站幾乎時時刻刻都在接受著高并發(fā)和海量數(shù)據(jù)的洗禮,隨著用戶規(guī)模的線性上升,單庫的性能瓶頸會逐漸暴露出來,由于數(shù)據(jù)庫的檢索效率越來越慢,導(dǎo)致生產(chǎn)環(huán)境中產(chǎn)生較多的慢速 SQL。
對于非結(jié)構(gòu)化的數(shù)據(jù),可以將其存儲在 NoSQL數(shù)據(jù)庫中來提升性能,但是重要的業(yè)務(wù)數(shù)據(jù),仍然要落盤在關(guān)系型數(shù)據(jù)庫(如 MySQL數(shù)據(jù)庫)中。
那么如何提升關(guān)系型數(shù)據(jù)庫的并行處理能力和檢索效率就成為了架構(gòu)師需要思考和解決的棘手問題,并且單庫如果巖機(jī),業(yè)務(wù)系統(tǒng)也就隨之癱瘓了。
因此,在互聯(lián)網(wǎng)場景下,架構(gòu)師務(wù)必要確保后端存儲系統(tǒng)具備高可用性和高性能,為了解決這些問題,目前互聯(lián)網(wǎng)場景下常見的做法便是對數(shù)據(jù)庫實(shí)施分庫分表,即Sharding 改造。






