阿里P7架構(gòu)師的成長(zhǎng)之路

? 前言

? ? ? 系統(tǒng)架構(gòu)師是近幾年來在國內(nèi)外迅速成長(zhǎng)并發(fā)展良好的一個(gè)職位,它的重要性及給互聯(lián)網(wǎng)行業(yè)所帶來的影響是不言而喻的。很多程序員把成為一名優(yōu)秀的架構(gòu)師作為自己職業(yè)生涯奮斗的目標(biāo),但很多人努力卻用不對(duì)地方,前段時(shí)間我與在阿里的P7架構(gòu)師談到了這個(gè)問題,并且整理出來,希望對(duì)在迷茫期的程序員有所幫助。

1、問:阿里的技術(shù)專家P7從招聘層面上來說,比如工作年限、項(xiàng)目經(jīng)歷、技術(shù)能力等需要達(dá)到什么樣的要求?

答:工作年限是5-10年,在技術(shù)上有扎實(shí)的基礎(chǔ)能力,有技術(shù)亮點(diǎn),用過的框架要知道其技術(shù)原理,具備分布式系統(tǒng)的開發(fā)經(jīng)驗(yàn),能獨(dú)立解決各種技術(shù)問題,比較強(qiáng)的實(shí)戰(zhàn)能力。

阿里的P5要求能獨(dú)立負(fù)責(zé)一個(gè)模塊,P6要求能獨(dú)立負(fù)責(zé)一個(gè)系統(tǒng),P7要求能架構(gòu)和負(fù)責(zé)多個(gè)系統(tǒng),并規(guī)劃系統(tǒng)的未來能力,在某個(gè)領(lǐng)域達(dá)到專家水平,可以是某個(gè)業(yè)務(wù)領(lǐng)域,也可以是某個(gè)技術(shù)領(lǐng)域。


2、問:工作中,產(chǎn)品方案設(shè)計(jì)的時(shí)候,經(jīng)常會(huì)存在多方分歧,有分歧就會(huì)存在妥協(xié),如何合理地堅(jiān)持自己的觀點(diǎn),如何合理地做出妥協(xié)?

答:方案沒有對(duì)錯(cuò),每個(gè)方案都有它的優(yōu)點(diǎn)和缺點(diǎn),要分析別人方案的優(yōu)缺點(diǎn),先肯定對(duì)方方案的優(yōu)點(diǎn),再針對(duì)缺點(diǎn)提出如何解決這個(gè)問題,還是說不解決這個(gè)缺點(diǎn)。一起討論出最合適的方案,而不是要爭(zhēng)論誰對(duì)誰錯(cuò)。


3、問:我就是在業(yè)務(wù)團(tuán)隊(duì),偏技術(shù),框架聽起來很酷但遙遠(yuǎn),能否分享幾個(gè)知識(shí)點(diǎn)?

答:在業(yè)務(wù)團(tuán)隊(duì)也可以做很多框架,比如可配置化支持業(yè)務(wù)的框架、自動(dòng)生成添加刪除修改頁面的框架、業(yè)務(wù)數(shù)據(jù)校驗(yàn)的框架,只要多思考如何快速支持業(yè)務(wù),就能找到合適的業(yè)務(wù)框架??梢詮膸讉€(gè)點(diǎn)出發(fā):配置化支持業(yè)務(wù)、頁面自動(dòng)生成、流程標(biāo)準(zhǔn)化等。


4、問:最近在學(xué)習(xí)Spring源碼,看了幾本書,可以跟著作者的思路看源碼,但是看完不久就忘了,其實(shí)是沒有太多的應(yīng)用場(chǎng)景,對(duì)于看源碼,有什么好的方法嗎?

答:可以用這個(gè)思路,比如讓你來設(shè)計(jì)一個(gè)Spring框架你會(huì)如何來設(shè)計(jì),Spring Core最重要的就是IOC和AOP。自己可以嘗試實(shí)現(xiàn)下簡(jiǎn)單的IOC和AOP功能,然后再去對(duì)比看下Spring是如何實(shí)現(xiàn)的,這樣即使忘記了Spring的代碼,但是仍然能基礎(chǔ)其實(shí)現(xiàn)原理。


5、問:對(duì)于三十歲的程度員,如果還想再深入做技術(shù),有什么建議?

答:技術(shù)人員一定要有危機(jī)感,無論多大年紀(jì)仍然要持續(xù)地學(xué)習(xí),我也已經(jīng)三十多了,每周會(huì)花點(diǎn)時(shí)間學(xué)習(xí)點(diǎn)技術(shù)。但是年紀(jì)大了,其實(shí)時(shí)間不會(huì)那么多,所以要提高學(xué)習(xí)的效率,掌握一些學(xué)習(xí)方法,并且要靜下心來學(xué)習(xí)。

學(xué)技術(shù)什么時(shí)間都不晚,因?yàn)榭傆行录夹g(shù)冒出來,但是一些永遠(yuǎn)不變的技術(shù)可以優(yōu)先學(xué)習(xí),比如各種協(xié)議(TCP,HTTP,一致性hash協(xié)議)、實(shí)現(xiàn)原理、算法等。


6、問:自己也實(shí)現(xiàn)過IOC和AOP的一些小案例,但是實(shí)現(xiàn)比較簡(jiǎn)單,IOC是基于一個(gè)Map來實(shí)現(xiàn)的,AOP使用CgLib實(shí)現(xiàn),但是再看Spring Core的源碼時(shí),還是感覺很吃力,嵌套層次太多,Debug多次,還是比較吃力,怎么辦?

答:技術(shù)人員一定要有個(gè)特質(zhì)就是死磕,有的技術(shù)人員可能花2個(gè)星期解決一個(gè)技術(shù)BUG,就是對(duì)著源碼一點(diǎn)點(diǎn)看,要能入定,帶著問題去看源碼會(huì)更輕松。

另一方面,要給自己制定學(xué)習(xí)計(jì)劃,比如要學(xué)習(xí)哪些技術(shù)、每天學(xué)習(xí)什么、達(dá)到什么程度。工作中用一些方法減少雜亂無難度的工作內(nèi)容,比如白天不答疑,或只在固定的時(shí)間答疑,寫FAQ減少答疑,少參與一些會(huì)議,不實(shí)時(shí)去回即時(shí)通訊軟件。


7、問:你覺得成為一個(gè)架構(gòu)師應(yīng)該具備什么樣的技能?

答:我結(jié)合自己多年的項(xiàng)目經(jīng)驗(yàn)總結(jié)出來的技能體系,希望能幫助迷茫的程序員,找到正確的學(xué)習(xí)路線,學(xué)習(xí)方向大概有七點(diǎn)。


構(gòu)成架構(gòu)師的技能體系


一、源碼知識(shí)點(diǎn)

? ? ? 源碼分析對(duì)于很多人來說很枯燥,生澀難懂,下圖詳細(xì)介紹了源碼中所用到的經(jīng)典設(shè)計(jì)思想及常用設(shè)計(jì)模式,幫助大家找到分析源碼的切入點(diǎn),了解大牛是如何寫代碼的。

二、分布式架構(gòu)

? ? ? 分布式系統(tǒng)的任務(wù)是把多臺(tái)機(jī)器有機(jī)地組合、連接起來,讓其協(xié)同完成一件任務(wù),可以是計(jì)算任務(wù),也可以是存儲(chǔ)任務(wù)。

? ? ? 從分布式架構(gòu)原理,到分布式架構(gòu)策略、分布式架構(gòu)中間件,最后在加上分布式架構(gòu)實(shí)戰(zhàn),讓程序員可以在技術(shù)深度和技術(shù)廣度上得到飛躍的提升。但分布式系統(tǒng)是一個(gè)復(fù)雜且寬泛的研究領(lǐng)域,學(xué)習(xí)一兩門在線課程,看幾本書是不能完全覆蓋其所有內(nèi)容的。

三、微服務(wù)架構(gòu)技能

? ? ? 當(dāng)今微服務(wù)架構(gòu)非常流行,其核心思想是服務(wù)拆分與解耦,降低復(fù)雜性。微服務(wù)強(qiáng)調(diào)將功能合理拆解,盡可能保證每個(gè)服務(wù)的功能單一, 根據(jù)各個(gè)服務(wù)自身資源需求,單獨(dú)布署,單獨(dú)作橫向擴(kuò)展,將各個(gè)服務(wù)做到靈活、可復(fù)用。

? ? ? 微服務(wù)架構(gòu)解決了傳統(tǒng)單體式架構(gòu)的弊端,但其實(shí)施的本身面臨很多陷阱和挑戰(zhàn),涉及到設(shè)計(jì)、開發(fā)、測(cè)試、部署、運(yùn)行和運(yùn)維等各個(gè)方面,一旦使用不當(dāng),則會(huì)導(dǎo)致整個(gè)微服務(wù)架構(gòu)改造的效果大打折扣,甚至失敗。對(duì)于這些問題,我總結(jié)出微服務(wù)需要學(xué)習(xí)的知識(shí)點(diǎn),如下圖所示:

?四、并發(fā)編程

? ? ? 并發(fā)編程幾乎是所有互聯(lián)網(wǎng)公司面試必問問題,并發(fā)編程是Java程序員最重要的技能之一,也是最難掌握的一種技能。它要求編程者對(duì)計(jì)算機(jī)最底層的運(yùn)作原理有深刻的理解,同時(shí)要求編程者邏輯清晰、思維縝密,這樣才能寫出高效、安全、可靠的多線程并發(fā)程序。目前網(wǎng)上沒有系統(tǒng)的全面的并發(fā)編程學(xué)習(xí)大綱,我搜集了很多資料總結(jié)出一個(gè)較全面的學(xué)習(xí)大綱:

五、性能優(yōu)化

? ? ? 大家都知道,性能一直是讓程序員比較頭疼的問題。當(dāng)系統(tǒng)架構(gòu)變得復(fù)雜而龐大之后,性能方面就會(huì)下降,如果想成為一名優(yōu)秀的架構(gòu)師,性能優(yōu)化就是你必須思考的問題。

? ? ? 必須要明白的是:沒有兩個(gè)應(yīng)用程序可以使用相同的優(yōu)化方式,也沒有完美的優(yōu)化 java 應(yīng)用程序的參考路徑,,堅(jiān)持采用適當(dāng)?shù)姆绞教幚硇阅軆?yōu)化。想要達(dá)到最高的性能優(yōu)化,作為一個(gè) Java 開發(fā)人員,需要對(duì) Java 虛擬機(jī)(JVM)和底層操作系統(tǒng)有正確的理解。而在此之前要理解性能優(yōu)化的知識(shí)體系,如下圖所示:

六、實(shí)踐一個(gè)雙十一電商項(xiàng)目

? ? ? 電商項(xiàng)目目的是把所學(xué)的分布式、微服務(wù)、性能調(diào)優(yōu)等知識(shí)運(yùn)用起來,只有在項(xiàng)目中你才能鞏固知識(shí),提升自己。實(shí)踐電商項(xiàng)目會(huì)利用云服務(wù)器搭建真實(shí)的開發(fā)和部署環(huán)境,讓你從零到項(xiàng)目實(shí)戰(zhàn),體驗(yàn)真實(shí)的企業(yè)級(jí)項(xiàng)目開發(fā)過程,讓你具備獨(dú)立開發(fā)和搭建分布架構(gòu)系統(tǒng)的能力。

七、Java開發(fā)必知工具

古語云:工欲善其事必先利其器,不管是小白,還是資深開發(fā),都需要先選擇好的工具。特別是一名優(yōu)秀的架構(gòu)師必須有適合自己的工具,工程化專題的學(xué)習(xí)能幫助你和團(tuán)隊(duì)提升開發(fā)效率,讓自己有更多時(shí)間來思考。

Git:可以更好地管理你和你團(tuán)隊(duì)的代碼。

Maven:可以更好地管理jar包和項(xiàng)目的構(gòu)建等。

Jenkins:可以更好地持續(xù)編譯,集成,發(fā)布你的項(xiàng)目。

Sonar:一個(gè)開源的代碼質(zhì)量分析平臺(tái),便于管理代碼的質(zhì)量,可檢查出項(xiàng)目代碼的漏洞和潛在的邏輯問題(提升代碼的質(zhì)量,更加高效地提升開發(fā)效率)。


如何學(xué)習(xí)才能快速入門并精通呢?

當(dāng)真正開始學(xué)習(xí)時(shí)難免不知從何入手,從而導(dǎo)致效率低下影響繼續(xù)學(xué)習(xí)的信心。

但最重要的是不知道需要重點(diǎn)掌握哪些技術(shù),學(xué)習(xí)時(shí)頻繁踩坑,最終浪費(fèi)大量時(shí)間。

為了讓學(xué)習(xí)變得輕松高效, 現(xiàn)在給大家提供一個(gè)學(xué)習(xí)平臺(tái),讓你在實(shí)踐中積累經(jīng)驗(yàn)掌握原理。主要方向是JAVA架構(gòu)師,在這里你可以學(xué)習(xí)Java工程化、高性能及分布式、深入淺出、性能調(diào)優(yōu)、Spring,MyBatis,Netty源碼分析和大數(shù)據(jù)等知識(shí)點(diǎn)??梢约尤?b>Java后端技術(shù)群:819940388群里有阿里大牛直播講解技術(shù),或是關(guān)注微信公眾號(hào):Java資訊庫,回復(fù)“架構(gòu)”,免費(fèi)的大型互聯(lián)網(wǎng)Java技術(shù)視頻分享給大家。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,555評(píng)論 19 139
  • 前言 基于 Docker 的容器技術(shù)是在2015年的時(shí)候開始接觸的,兩年多的時(shí)間,作為一名 Docker 的 De...
    Java架構(gòu)閱讀 9,054評(píng)論 2 144
  • 本周臨摹:西瓜耗時(shí):一小時(shí) 一、 鉛筆勾勒出基本線條 二、 淺綠色彩鉛給西瓜上色 三、 深綠色彩鉛畫上西瓜條紋 四...
    云云不語閱讀 346評(píng)論 0 4
  • 頭發(fā)碎碎地灑在陽光下, 像是拘留在歲月里的剪影, 連綿的陰雨, 包裹桂花香的雨水, 讓我過分的依賴起溫暖的光, 就...
    陸分之壹閱讀 370評(píng)論 9 7
  • 喜歡你一月余。 我開始越來越少地提到你的大滿貫,你的445,越來越多地看到別的東西。 看到你的肩傷,看到你的腰傷,...
    糖罐子糖閱讀 178評(píng)論 0 0

友情鏈接更多精彩內(nèi)容