阿里P7架構師分享的技術體系

阿里P7架構師分享的技術體系

前言

系統架構師是近幾年來在國內外迅速成長並發展良好的一個職位,它的重要性及給互聯網行業所帶來的影響是不言而喻的。很多程序員把成為一名優秀的架構師作為自己職業生涯奮鬥的目標,但很多人努力卻用不對地方,前段時間我與在阿里的P7架構師談到了這個問題,並且整理出來,希望對在迷茫期的程序員有所幫助。

阿里P7架構師分享的技術體系

1、問:阿里的技術專家P7從招聘層面上來說,比如工作年限、項目經歷、技術能力等需要達到什麼樣的要求?

答:工作年限是5-10年,在技術上有紮實的基礎能力,有技術亮點,用過的框架要知道其技術原理,具備分佈式系統的開發經驗,能獨立解決各種技術問題,比較強的實戰能力。

阿里的P5要求能獨立負責一個模塊,P6要求能獨立負責一個系統,P7要求能架構和負責多個系統,並規劃系統的未來能力,在某個領域達到專家水平,可以是某個業務領域,也可以是某個技術領域。

2、問:工作中,產品方案設計的時候,經常會存在多方分歧,有分歧就會存在妥協,如何合理地堅持自己的觀點,如何合理地做出妥協?

答:方案沒有對錯,每個方案都有它的優點和缺點,要分析別人方案的優缺點,先肯定對方方案的優點,再針對缺點提出如何解決這個問題,還是說不解決這個缺點。一起討論出最合適的方案,而不是要爭論誰對誰錯。

3、問:我就是在業務團隊,偏技術,框架聽起來很酷但遙遠,能否分享幾個知識點?

答:在業務團隊也可以做很多框架,比如可配置化支持業務的框架、自動生成添加刪除修改頁面的框架、業務數據校驗的框架,只要多思考如何快速支持業務,就能找到合適的業務框架。可以從幾個點出發:配置化支持業務、頁面自動生成、流程標準化等。

4、問:最近在學習Spring源碼,看了幾本書,可以跟著作者的思路看源碼,但是看完不久就忘了,其實是沒有太多的應用場景,對於看源碼,有什麼好的方法嗎?

答:可以用這個思路,比如讓你來設計一個Spring框架你會如何來設計,Spring Core最重要的就是IOC和AOP。自己可以嘗試實現下簡單的IOC和AOP功能,然後再去對比看下Spring是如何實現的,這樣即使忘記了Spring的代碼,但是仍然能基礎其實現原理。

5、問:對於三十歲的程度員,如果還想再深入做技術,有什麼建議?

答:技術人員一定要有危機感,無論多大年紀仍然要持續地學習,我也已經三十多了,每週會花點時間學習點技術。但是年紀大了,其實時間不會那麼多,所以要提高學習的效率,掌握一些學習方法,並且要靜下心來學習。

學技術什麼時間都不晚,因為總有新技術冒出來,但是一些永遠不變的技術可以優先學習,比如各種協議(TCP,HTTP,一致性hash協議)、實現原理、算法等。

6、問:自己也實現過IOC和AOP的一些小案例,但是實現比較簡單,IOC是基於一個Map來實現的,AOP使用CgLib實現,但是再看Spring Core的源碼時,還是感覺很吃力,嵌套層次太多,Debug多次,還是比較吃力,怎麼辦?

答:技術人員一定要有個特質就是死磕,有的技術人員可能花2個星期解決一個技術BUG,就是對著源碼一點點看,要能入定,帶著問題去看源碼會更輕鬆。

另一方面,要給自己制定學習計劃,比如要學習哪些技術、每天學習什麼、達到什麼程度。工作中用一些方法減少雜亂無難度的工作內容,比如白天不答疑,或只在固定的時間答疑,寫FAQ減少答疑,少參與一些會議,不實時去回即時通訊軟件。

7、問:你覺得成為一個架構師應該具備什麼樣的技能?

答:我結合自己多年的項目經驗總結出來的技能體系,希望能幫助迷茫的程序員,找到正確的學習路線,學習方向大概有七點。

構成架構師的技能體系

阿里P7架構師分享的技術體系

一、源碼知識點

源碼分析對於很多人來說很枯燥,生澀難懂,下圖詳細介紹了源碼中所用到的經典設計思想及常用設計模式,幫助大家找到分析源碼的切入點,瞭解大牛是如何寫代碼的。

阿里P7架構師分享的技術體系

二、分佈式架構

阿里P7架構師分享的技術體系

分佈式系統的任務是把多臺機器有機地組合、連接起來,讓其協同完成一件任務,可以是計算任務,也可以是存儲任務。

從分佈式架構原理,到分佈式架構策略、分佈式架構中間件,最後在加上分佈式架構實戰,讓程序員可以在技術深度和技術廣度上得到飛躍的提升。但分佈式系統是一個複雜且寬泛的研究領域,學習一兩門在線課程,看幾本書是不能完全覆蓋其所有內容的。

三、微服務架構技能

當今微服務架構非常流行,其核心思想是服務拆分與解耦,降低複雜性。微服務強調將功能合理拆解,儘可能保證每個服務的功能單一, 根據各個服務自身資源需求,單獨佈署,單獨作橫向擴展,將各個服務做到靈活、可複用。

微服務架構解決了傳統單體式架構的弊端,但其實施的本身面臨很多陷阱和挑戰,涉及到設計、開發、測試、部署、運行和運維等各個方面,一旦使用不當,則會導致整個微服務架構改造的效果大打折扣,甚至失敗。對於這些問題,我總結出微服務需要學習的知識點,如下圖所示:

阿里P7架構師分享的技術體系

四、併發編程

併發編程幾乎是所有互聯網公司面試必問問題,併發編程是Java程序員最重要的技能之一,也是最難掌握的一種技能。它要求編程者對計算機最底層的運作原理有深刻的理解,同時要求編程者邏輯清晰、思維縝密,這樣才能寫出高效、安全、可靠的多線程併發程序。目前網上沒有系統的全面的併發編程學習大綱,我搜集了很多資料總結出一個較全面的學習大綱:

阿里P7架構師分享的技術體系

五、性能優化

大家都知道,性能一直是讓程序員比較頭疼的問題。當系統架構變得複雜而龐大之後,性能方面就會下降,如果想成為一名優秀的架構師,性能優化就是你必須思考的問題。

必須要明白的是:沒有兩個應用程序可以使用相同的優化方式,也沒有完美的優化 java 應用程序的參考路徑,,堅持採用適當的方式處理性能優化。想要達到最高的性能優化,作為一個 Java 開發人員,需要對 Java 虛擬機(JVM)和底層操作系統有正確的理解。而在此之前要理解性能優化的知識體系,如下圖所示:

阿里P7架構師分享的技術體系

六、實踐一個雙十一電商項目

電商項目目的是把所學的分佈式、微服務、性能調優等知識運用起來,只有在項目中你才能鞏固知識,提升自己。實踐電商項目會利用雲服務器搭建真實的開發和部署環境,讓你從零到項目實戰,體驗真實的企業級項目開發過程,讓你具備獨立開發和搭建分佈架構系統的能力。

阿里P7架構師分享的技術體系

七、Java開發必知工具

阿里P7架構師分享的技術體系

古語云:工欲善其事必先利其器,不管是小白,還是資深開發,都需要先選擇好的工具。特別是一名優秀的架構師必須有適合自己的工具,工程化專題的學習能幫助你和團隊提升開發效率,讓自己有更多時間來思考。

Git:可以更好地管理你和你團隊的代碼。

Maven:可以更好地管理jar包和項目的構建等。

Jenkins:可以更好地持續編譯,集成,發佈你的項目。

Sonar:一個開源的代碼質量分析平臺,便於管理代碼的質量,可檢查出項目代碼的漏洞和潛在的邏輯問題(提升代碼的質量,更加高效地提升開發效率)。

還有更多資料,需要的朋友私信二柱子“資料”獲取哦~

阿里P7架構師分享的技術體系
阿里P7架構師分享的技術體系
阿里P7架構師分享的技術體系


分享到:


相關文章: