零基礎如何學架構

“無意中發現了一個巨牛的人工智能教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看小說一樣!覺得太牛了,所以分享給大家。點這裏可以跳轉到教程。”

都說程序員的發展方向有兩個:一是一直鑽研技術,往架構師方向發展二是轉管理,往技術管理方向發展。由於在管理的道路上已經“人滿爲患”了,大部分程序員的選擇只有一個:往架構師方向發展。那麼,如何才能成爲一位優秀的架構師呢?成爲一位架構師需要學習哪些技術知識、具備哪些能力呢?帶着這種種的疑問,我閱讀了《從零開始學架構》一書,該書是由極客時間App上的同名技術專欄改編而成。本書作者李運華老師是阿里巴巴資深技術專家,具備豐富的軟件架構經驗。

通過對本書的學習,我瞭解到了作爲一位架構師需要具備的方方面面的知識。在這篇文章中,我分享一下自己的學習總結,供各位有志成爲架構師的朋友參考。

 

本書主要內容

作者在前言中提到,他大概從2006年開始參與架構設計,從最早開始接觸架構設計,到自我感覺初步完整掌握架構設計,至少花費了6年時間;到自我感覺徹底掌握架構設計的精髓,至少花費了8年的時間。由此可見,架構設計需要長期的實戰才行。在實踐中,作者總結出架構設計的關鍵思維是判斷和取捨,程序設計的關鍵思維是邏輯和實現。因此,對於想成爲架構師的人來說,一定不能操之過急,要循序漸進地積累經驗。

本書的主要內容分爲五個部分,分別是:概念和基礎、高性能架構模式、高可用架構模式、可擴展架構模式、架構實戰

我用下面這張思維導圖來概括本書的主要內容。

架構基礎知識 

本書第一部分涉及到架構概念和基礎知識,具體包括:架構基礎、架構設計原則和架構設計流程

我們通常所說的系統泛指由一羣有關聯的個體組成,根據某種規則運行,能完成個別元件不能單獨完成的工作的羣體;軟件模塊(Module)是一套一致而互相緊密關聯的軟件組織,它包含了程序和數據結構兩部分而軟件框架(Software Framework)通常指的是爲了實現某個業界標準或完成特定基本任務的軟件組件規範,也指爲了實現某個軟件組件規範時,提供規範所要求之基礎功能的軟件產品。那麼,什麼是軟件架構呢?它指的是軟件系統的頂層結構架構設計的主要目的是爲了解決軟件系統複雜度帶來的問題

作者提到的架構設計原則有三個:第一,合適原則,即合適的架構優於業界領先的架構;第二,簡單原則,即簡單的架構優於複雜的架構;第三,演化原則,即架構需要隨着業務的發展而不斷演進。作者認爲,真正優秀的架構都是在企業當前人力、條件、業務等各種約束條件下設計出來的,能夠合理地將資源整合在一起並發揮出最大功效,並且能夠快速落地

軟件開發有一個過程,架構設計也有一個流程,主要包括:第一步,分析出系統的複雜性;第二步,架構師根據自己對業務的理解,挑選合適的架構模式進行組合,再對組合後的方案進行修改和調整;第三步,通過360度環評的方式來評估備選方案,並且按照質量屬性的優先級來判斷備選方案的優劣;第四步,通過分步驟、分階段、分系統等方式,儘量降低方案複雜度;第五步,採取設計團隊的方式來進行設計,彙集團隊經驗,減少思維和經驗盲區,讓架構設計最終落地

 

高性能架構模式

本書第二部分涉及到高性能架構模式,主要包括:存儲高性能和計算高性能

存儲高性能主要是高性能數據庫集羣,第一種實現方式是“讀寫分離”,其本質是將訪問壓力分散到集羣中的多個節點,但是沒有分散存儲壓力;第二種實現方式是“分庫分表”,既可以分散訪問壓力,又可以分散存儲壓力。

計算高性能主要有四種模型:第一,PPC模型(每次有新的連接時就新建一個進程去專門處理這個連接的請求);第二,TPC模型(每次有新的連接時就新建一個線程去專門處理這個連接的請求);第三,Reactor模型(其基礎是I/O多路複用);第四,Proactor模型(非阻塞異步網絡模式)。

 

高可用架構模式

本書第三部分涉及到高可用架構模式,主要包括:CAPFMEA、存儲高可用、計算高可用、業務高可用

在架構設計上,有個非常經典的CAP理論,它三個核心要素是:C(一致性)A(可用性)P(分區容忍性)。CAP理論指分佈式系統中涉及讀寫操作時,一致性、可用性、分區容忍性三個要素只能保證兩個,另外一個必須被犧牲。分佈式系統理論上不可能選擇CA架構,只能選擇CP或AP架構。

FMEA(失效模式與影響分析)是一種在各行各業都有廣泛應用的可用性分析方法,通過對系統範圍內潛在的故障模式加以分析,並按照嚴重程度進行分類,以確定失效對於系統的最終影響。FMEA分析方法很簡單,就是一個FMEA分析表,表中的內容包括:功能點、故障模式、嚴重程度、故障原因、風險程度。FMEA分析中不一定所有的問題都要解決,採取規避措施也可以。

 

可擴展架構模式

本書第四部分涉及到可擴展架構模式,主要包括:可擴展模式、分層架構、SOA架構、微服務、微內核架構

作者認爲,軟件系統與硬件、建築系統最大的差異在於軟件是可擴展的真正有生命力的軟件系統都是在不斷迭代和發展的。所有的可擴展性架構設計背後的基本思想都可以總結爲一個字:,而拆分軟件系統的方式有三種:面向流程拆分、面向服務拆分和麪向功能拆分。可想而知,不同的拆分方式將得到不同的系統架構。

分層架構是很常見的架構模式,也叫N層架構,通常情況下,N至少是2層,一般不超過5層。無論採取何種分層維度,分層架構設計最核心的一點就是需要保證各層之間的差異足夠清晰,邊界足夠明顯

SOA(面向服務的架構)提出的背景是企業內部的IT系統重複建設且效率低下,它的三個關鍵概念是:服務、ESB(企業服務總線)和鬆耦合。在SOA架構中,每項業務功能都是一項服務,服務就意味着要對外提供開放的能力。

微服務是一種和SOA相似但本質上不同的架構理念,它的三個關鍵詞是:smalllightweightautomated。微服務和SOA不存在孰優孰劣,只是應用場景不同。

微內核架構也被稱爲插件化架構(Plug-in Architecture),是一種面向功能進行拆分的可擴展性架構,它通常用於實現基於產品的應用。微內核架構包含兩類組件:核心系統(core system)和插件模塊(plug-in modules)。

 

總結

本書除了介紹架構設計理論之外,還用一個部分的內容介紹了架構實戰,包括:消息隊列設計實戰、架構重構等。此外,作者還在最後一章介紹了開源系統

本書內容詳盡、圖文並茂,非常適合各位程序員朋友們閱讀。就像作者在書中所說:每個程序員心中都有一個成爲架構師的夢想,夢想是美好的,但道路是曲折的。要想成爲一名合格的架構師,我們只能一步一個腳印,在摸爬滾打中提升自己的技能。

如果大家對本書的內容感興趣,可以購買學習,也可以閱讀我繪製的思維導圖。下載鏈接如下,希望對大家瞭解架構設計有所幫助。

鏈接:https://pan.baidu.com/s/1VCLaWIv6kars-fKWN25Zyg 

提取碼:qzqh 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章