成為1個架構師的入門到進階之路(學習路線圖)

成為1個架構師的入門到進階之路(學習路線圖)

計算機領域技術更迭非常之快,內容博大精深。涉及到分散式架構,更是分支眾多,知識龐雜。很多新人在最初往往找不到頭緒,不知道從何處下手來一步步提升自己的技術水準。

本文將介紹要成為1個技術大牛的18般兵器譜,以及這條打怪升級之路,希望可以讓新人少走彎路,在這條路上一步步提升自己。

階段1: 計算機功底

(1)常用數據結構,演算法的時間/空間複雜度的計算(隨便找本大學教科書都有的內容)

(2)Linux操作系統(從各種命令操作,到原理的理解:比如各種IO,磁碟文件組織、進程與內存管理、epoll)

(3)多線程(無論是用Java的Concurrent Util,還是C++直接用Liunx的pthread,原理都一樣。各種線程同步機制的深刻理解)

(4)網路(知道一個完整的socket c/s程序是如何寫的,TCP/IP協議的原理)

(5)資料庫(比如B+樹為什麼可以實現關係資料庫的各種查詢方式、排序,比如事務的隔離級別)

(6)精通1門語言:不是只會用語法,而是能深刻理解語言下面的實現機制。如果你搞Java,怎要很好理解JVM的各種機制,class loader,內存模型,註解,動態代理。。;

如果你搞C++,需要理解編譯、鏈接、運行的整個過程,對象在內存裡面如何布局的,多態咋實現的(這方面書籍狂多,隨便找1本國外大牛的書,好好啃完,對語言的理解就會深刻很多);

如果你搞其他語言,比如PHP,GO, Rust,同樣的,除了很熟練的會用,可以去理解背後的實現原理。。

階段2: 能用框架搭建各種系統

你可以用各種開源框架,搭建常用的Web應用,以Java為例:

Nginx,SpringMVC, Dubbo或者Spring Cloud,Mysql,Redis/Memcached,TFS,Kafka或者RocketMQ,CDN等

當然,非Web應用,比如IM這種,也有類似的各種框架(XMPP協議的實現),或者第3方支持的。

在這個階段,也就知道了各種框架怎麼用的,面對各種五花八門的業務,你都可以搭建出符合需求的系統出來:

Nginx的負載均衡;

SpringMVC的Web應用;

Dubbo/Spring Cloud的微服務框架;

Redis的分散式緩存;

Kafka的分散式隊列;

CDN的靜態內容分發;

TFS的分散式文件存儲;

階段3: 基礎架構與中間件的原理

到了這個階段,就需要的不光是用,而是對原理的深刻理解,有必要的看看源碼。

用Redis Cluster,知道有哪些關鍵特性,這些特性的原理有好的理解;

用Kafka,知道Kafka為什麼快,為什麼高可用,其實現原理是什麼。。

用Dubbo,知道網路IO怎麼玩的,服務註冊怎麼搞的,動態代理用來幹嘛。。

。。

對於做偏業務架構的人來說,這個階段,只要原理很清楚就可以;

但如果就是做基礎架構,那就不是光原理清楚了,而是要精通,對源代碼很熟。

階段4: 高並發 & 高可用 & 穩定性 & 一致性

到了這個階段,可以說「術」這個層面已經很成熟,接下來就是要修「道」了。

我所說的「道」,就是指解決問題的方法論,成體系的方法,可以讓上面這些武器、招式,在你的手上流暢發揮,讓你面對任何問題的時候,都能從容應對。

第1種道:C端的大型系統,能夠出完善的技術設計方案,在高並發、高可用、穩定性、一致性方面,都有很好的考慮。

階段5: 業務建模、業務架構

第2種道:B端的大型業務系統。

C端的東西,用戶訪問量很大,但業務邏輯相對簡單。

而B端的系統,往往流程很長,功能模塊狂多,開發團隊人數多,流程與流程之間還各種耦合。在這種情況下,如果不能站在技術上面,更抽象的看整個系統,會面臨失控的局面。到最後,就是沒有人能說清楚這個系統到底幹了多少事情。

所以,在這個階段,需要能對整個業務做一個邏輯上的架構,這個邏輯架構最終會達到下面幾個目的:

(1)整個系統具有很有的復用性、擴展性,不拖業務後腿

(2)團隊人員,可以依據這個架構進行分工,高效協作

(3)更高級的,有前瞻性的,不僅不拖業務後腿,反而給了業務發揮空間。

階段6:團隊與領導力

這個階段,就不光是技術的問題了。團隊管理能力、綜合素質、行業機遇、公司機遇、耐心。。種種因素的綜合,讓你可以帶領1個很大的團隊,做一個完整的業務,然後帶更大的團隊,做更大的業務。。。

寫在最後:幾個關鍵點

(1)上面的6個階段,不是1個線性的過程,而是1個螺旋上升的過程,這也是事務發展的普適規律。越是大牛,往往越重視功底,到後面了,發現前面功底還不夠,又回去更深的研究功底。

(2)空杯心態:其實除了上面列舉的還有很多東西需要了解,比如機器學習、大數據、區塊鏈。。這也是我在另外一篇文章提到的。活到老,學到老。

(3)到了後面,就超出了技術可主導的範疇了。現實中種種因素的合力,讓你站在人生的某個位置。(此處不談人生)

(4)興趣。任何一個技,一個藝,都是十年磨一劍,沒有興趣,光憑毅力是持久不了的。

(5)耐心。再複雜的東西,都是從1+1=2開始的,單獨看某1步,並不難;一點點的累積,累積到最後,你就覺得很複雜了。而這個過程,就需要你有耐心,從1+1=2開始。

後記:有興趣朋友也可以進一步關注公眾號「架構之道與術」, 獲取更多乾貨文章。


推薦閱讀:

【協議】HTTPS性能優化實踐
【原創】雲時代的領航員--解決方案架構師職位說明
讀懂這100篇論文,你也能成為大數據專家
架構師之路:一個架構師需要掌握的知識技能
【DevOps】阿里微服務之殤及分散式鏈路追蹤技術原理

TAG:架構師 | 科技 | 系統架構 |