寫在前面
前段時間一直在學習架構設計的相關知識,對架構的演化有了一點點本身的理解,本篇是個人架構入門總結,21年年初應該會接觸一些項目拆分的工做,也但願學到的內容能夠應用於實踐。本文將來還會補充更多細節。程序員
架構是什麼
這是我讀阿里技術博客的一篇文章總結的:
爲何須要架構設計呢?或者說架構設計爲何這麼重要呢?
架構設計的主要目的不是爲了拆分任務,不是爲了實現業務需求,甚至不是爲了實現高性能和高可靠的系統。
架構設計的主要目的是爲了解決系統複雜度帶來的問題。
架構
架構的通常需求
高性能,高可用,可擴展框架
架構的演化流程
單機部署->動靜分離->集羣化->讀寫分離->分庫分表->垂直拆分->微服務->引入消息隊列微服務
架構設計原則
李運華大佬總結的原則:
縱觀淘寶的發展,也能看到相似的架構設計原則,過早優化是萬惡之源,架構設計是門取捨的藝術。
性能
架構設計方法論
我本身設計的架構設計方法論:先頭腦風暴,再權衡利弊,再挑best one。詳細來講,就是包含以下幾個流程:
1.看下公司體量,理解清除業務(領域驅動),理清楚業務的複雜度。
2.根據業務抽象出架構的框架,弄清楚爲了實現業務帶來的系統複雜度。
3.找到公司裏已經使用的技術,包括自研技術和開源技術。
4.根據每一個技術的特色進行設計,以及綜合根據業務的場景和將來半年時間可能達到的量等考量,進行設計。
5.設計三個方案,進行優劣分析,而後綜合別人的意見選出最棒的方案。
學習
對架構師的要求
李運華說,架構師的內功主要包括判斷力(準確判斷系統複雜度),執行力(用合適的方案解決問題),創新力(創造新的方案解決複雜問題)。
所以在成長爲架構師的過程當中,要不斷積累經驗(10000小時理論),拓寬視野(泡腦子的過程),深度思考(概括總結,觸類旁通)。(PS:學習成長也是這個道理,貼一張今天技術羣剛剛討論的結論)
此外,要成爲架構師,還須要這十二項修煉Java程序員必備的12項軟技能
優化
參考資料
《大型網站技術架構》
《從0開始學架構》
《淘寶技術這十年》
《架構設計:大型互聯網架構演化簡史》
《軟件架構師12項修煉》
網站