1. 程式人生 > >阿里架構師十年經驗分享,你還在迷茫嗎?

阿里架構師十年經驗分享,你還在迷茫嗎?

第一階段:三年

我認為三年對於程式設計師來說是第一個門檻,這個階段將會淘汰掉一批不適合寫程式碼的人。這一階段,我們走出校園,邁入社會,成為一名程式設計師,正式從書本上的內容邁向真正的企業級開發。我們知道如何團隊協作、如何使用專案管理工具、專案版本如何控制、我們寫的程式碼如何測試如何在線上執行等等,積累了一定的 開發經驗,也對程式碼有了一定深入的認識,是一個比較純粹的Coder的階段。

第二階段:五年

五年又是區分程式設計師的第二個門檻。有些人在三年裡,除了完成工作,在空餘時間基本不會研究別的東西,這些人永遠就是個Coder,年紀大一些勢必被更年輕的人給頂替;有些人在三年裡,除了寫程式碼之外,還熱衷於研究各種技術實現細節、看了N多好書、寫一些部落格、在Github上分享技術,這些人在五年 後必然具備在技術上獨當一面的能力並且清楚自己未來的發展方向,從一個Coder逐步走向系統分析師或是架構師,成為專案組中不可或缺的人物。

第三階段:十年

十年又是另一個門檻了,轉行或是繼續做一名程式設計師就在這個節點上。如果在前幾年就抱定不轉行的思路並且為之努力的話,那麼在十年的這個節點上,有些 人必然成長為一名對行業有著深入認識、對技術有著深入認識、能從零開始對一個產品進行分析的程式設計師,這樣的人在公司基本擔任的都是CTO、技術專家、首席 架構師等最關鍵的職位,這對於自己絕對是一件榮耀的事,當然老闆在經濟上也絕不會虧待你。

第一部分總結一下,我認為,隨著你工作年限的增長、對生活對生命認識的深入,應當不斷思考三個問題:

1、我到底適不適合當一名程式設計師?

2、我到底應不應該一輩子以程式設計師為職業?

3、我對程式設計到底持有的是一種什麼樣的態度,是夠用就好呢還是不斷研究?

最終,明確自己的職業規劃,對自己的規劃負責併為之努力。

關於專案經驗

在網上經常看到一些別的朋友有提出專案經驗的問題,依照我面試的感覺來說,面試主要看幾點:專案經驗+基本技術+個人潛力(也就是值不值得培養)。

關於專案經驗,我認為併發程式設計網的創始人方騰飛老師講的一段話非常好:介紹產品時面試官會考察應聘者的溝通能力和思考能力,我們大部分情況都是做產品的一個功能或一個模組,但是即使是這樣,自己有沒有把整個系統架構或產品搞清楚,並能介紹清楚,為什麼做這個系統?這個系統的價值是什麼?這個系統有哪些功能?優缺點有哪些?如果讓你重新設計這個系統你會如何設計?

我覺得這就已經足以概括了。也許你僅僅工作一年,也許你做的是專案中微不足道的模組,當然這些一定是你的劣勢且無法改變,但是如何彌補這個劣勢?

從方老師的話中我總結幾點:

1、明確你的專案到底是做什麼的,有哪些功能。

2、明確你的專案的整體架構,在面試的時候能夠清楚地畫給面試官看並且清楚地指出從哪裡呼叫到哪裡、使用什麼方式呼叫。

3、明確你的模組在整個專案中所處的位置及作用。

4、明確你的模組用到了哪些技術,更好一些的可以再瞭解一下整個專案用到了哪些技術。

在你無法改變自己的工作年限、自己的不那麼有說服力的專案經驗的情況下(這一定是扣分項),可以通過這種方式來一定程度上地彌補並且增進面試官對你的好感度。

關於專業技能

寫完專案接著寫寫一名3年工作經驗的Java程式設計師應該具備的技能,這可能是Java程式設計師們比較關心的內容。我這裡要說明一下,以下列舉的內容不是都要會的東西,但是如果你掌握得越多,最終能得到的評價、拿到的薪水勢必也越高。

高可用

  • 負載均衡(負載均衡演算法)

  • 反向代理

  • 服務隔離

  • 服務限流

  • 服務降級(自動優雅降級)

  • 失效轉移

  • 超時重試(代理超時、容器超時、前端超時、中介軟體超時、資料庫超時、NoSql超時)

  • 回滾機制(上線回滾、資料庫版本回滾、事務回滾)

高併發

  • 應用快取

  • HTTP 快取

  • 多級快取

  • 分散式快取

  • 連線池

  • 非同步併發

分散式事務

  • 二階段提交(強一致)

  • 三階段提交(強一致)

  • 訊息中介軟體(最終一致性),推薦阿里的 RocketMQ。

佇列

  • 任務佇列

  • 訊息佇列

  • 請求佇列

擴容

單體垂直擴容

  • 單體水平擴容

  • 應用拆分

  • 資料庫拆分

  • 資料庫分庫分表

  • 資料異構

  • 分散式任務

網路安全

  • SQL 注入

  • XSS 攻擊

  • CSRF 攻擊

  • 拒絕服務(DoS,Denial of Service)攻擊

少年,任重而道遠,而現在有一個平臺可以提供給你們學習,讓你在實踐中積累經驗掌握原理。主要方向是JAVA架構師。如果你想拿高薪,想突破瓶頸,想跟別人競爭能取得優勢的,想進BAT但是有擔心面試不過的,可以加我的Java工程師學習交流群:795632998