系統架構系列(二) 系統架構的目的 難點和方法

2021-07-05 12:01:53 字數 2684 閱讀 7259

在本系列的第一篇文章中已經給出系統架構的公式定義:系統架構 = 要素 + 連線 + 解決特定的問題,本篇文章重點討論應對系統架構的方法。

如今,系統架構在業內還沒有定型的固定方法,一般會講:需求分析、系統分析與設計、uml、領域建模、設計模式、軟體工程等,筆者不打算這樣講,這樣下來會有厚厚一本書,希望從簡潔、可落地實踐的角度去闡述系統架構,後面的文章再給出每種架構具體可實踐操作的方法。

我們已經知道系統架構是什麼,有必要講一下系統架構的目的,即為什麼要進行系統架構。對於簡單的系統而言,可能沒有什麼所謂的系統架構,這裡的"沒有"可能對我們來講是常識,如簡單的系統分層。系統架構的本質目的從公式定義中就可以看出:解決特定的問題,這個特定的問題有技術上的問題、業務上的問題、專案管理上的問題。

還有乙個問題不知道開發者是否注意到:怎麼知道自己的架構設計是對的?這個問題很尖銳,架構設計具備嚴謹的邏輯性,從邏輯上講是對的,實現起來基本上**不離十,再根據實際使用情況做出調整。所以,系統架構從本質上講具備邏輯性,雖然還沒有真正實踐,但從架構方案上能看得出是否合理、正確。

結論一:系統架構的本質目的就是解決問題和具備邏輯性。

系統架構並不是任何初學者都可以一學就會的概念,它具備一定要求,所以這裡說的難點換個角度就是要掌握的能力。

技術上的難點對於開發來講比較好理解,在有些場景下,技術會成為架構的難點之一,如筆者之前在阿里店鋪團隊,雙 11 高達十幾萬的 qps,如果處理不當,可能就會導致訪問的店鋪頁面打不開。所以,對於高併發場景,我們面臨很多挑戰,以下列舉常見的技術難點:

技術上可以有意識地在平時去總結、練習,每種問題都應該有一套立體化的解決方法而不是乙個散點去應對,如高併發場景,有些同學立馬說用快取、用訊息佇列等,這些只是手段,如果從本質問題出發,在每個環節上思考如何去做,這樣就會提出系統性的解決方案,這一點會在後續文章中展開說明。

2.2 業務上的難點

有些業務是非常複雜的,不是簡單的 crud,涉及到的鏈路非常長、涉及到的業務關聯方也非常多,很有可能乙個系統的**行數超過 100 萬,還包括很多歷史邏輯在裡面,這個在新業務中出現的概率較小,一般是大型系統並且你是後面加入團隊的時候會遇到。尤其是使用者量大、涉及到交易業務的系統,錯一點就會造成巨大資損。作為乙個新人,加入這樣的團隊面臨的挑戰會比較大,如果沒有文件,只能靠自己去問、去看、去 debug、去踩坑。

在業務架構的基礎上,筆者提出業務能力地圖的觀點,如何讓乙個新人以最少的成本熟悉業務系統,除了業務系統設計得非常好,有詳細的文件可參考外,還要有視覺化的能力地圖,從乙個業務場景出發,中間涉及到的呼叫邏輯全部通過視覺化介面展示出來,乙個新人就可以很清晰地知道整個業務流程如何運轉,先從巨集觀上理解產品、業務運轉,再去看**要輕鬆得多。

乙個大型系統設計的業務方比較多,如果系統架構方案已經產出,剩下的就是落地執行,專案管理也有可能是我們的乙個難點,如何協調資源、處理衝突、關鍵專案里程碑、問題跟蹤和解決、上線灰度策略、業務監控…這些在系統架構設計時都要考慮到,並且在執行的過程中要有反饋。

乙個專案如果沒有人管理延期的風險會很大,其實大部分開發不善長做管理、溝通等事情,在乙個組織裡,不同的人、不同的事形成乙個較複雜的環境,所以也有人說管理是一門藝術。

上面著重從技術、業務、專案三個層面講解系統架構的難點,這些難點就是我們後面要解決的問題,反過來就是我們應該具備的基礎。

在換個思維學領域建模方法和實踐一文中,通過語文的閱讀理解來模擬領域建模的過程,有些讀者反饋這種方式較好,通俗易懂,想起來好像還是那麼一回事。筆者一直推崇的理念是大道至簡,通過過往經驗模擬複雜的問題,有乙個鋪墊會降低學習的複雜度。

在這裡依然用乙個大家都熟知的經驗來模擬系統架構。我們從小都寫作文,寫作文的步驟是什麼呢?

所以到這裡,不知道你發現了什麼沒,最關鍵的是什麼?就是文章結構,這裡的結構就體現出不同的邏輯,不同的人看後會有不同的感覺,有的文章讀後為什麼能讓你拍案叫絕,就是他的行文思路非常好、劇情引人入勝。

至此,寫作的核心要點就兩個:詞彙語句和文章結構。那麼模擬到架構設計,其實已經快呼出之出了,先等一下,我們對這兩個點再抽象一下。詞彙語句抽象了要素,文章結構抽象成模式。再來看系統架構,它的核心點也是上面兩種:

通過寫作模擬,應對系統架構的方法已經初步成型,接下來再細細道來。

本部分應該是最重要的,但經過前面的鋪墊,現在顯得並不是特別重要,因為不同的人看到這裡,心裡的想法肯定不一樣。

應對系統架構的方法:系統性思考、分解、抽象、模式

再來看我們之前對系統架構的定義: 系統架構 = 解決特定的問題 + 連線 + 要素,現在再去看它,會顯得特別親切,用一句話概括系統架構的方法:明確我們要解決的問題,通過系統化的思考方式找到關鍵的點,對不同的關鍵點進行分而治之,再通過抽象找出要素,最後通過一定的模式表現出來

結論二:應對系統架構的方法:系統性思考、分解、抽象、模式

從系統架構本質目的講起,然後提到系統架構的難點,難點即是要掌握的能力。最後通過我們熟知的寫作場景模擬系統架構,得到系統架構的方法:系統性思考、分解、抽象、模式。接下來的篇章就是具體的實踐,將分為業務架構、技術架構、應用架構幾個維度講解。

推薦系統系列 1 系統架構

最近開始學習推薦系統,在這裡做個記錄,會更新如下內容 推薦系統協同過濾與矩陣分解 推薦系統與深度學習 embedding在推薦系統中的應用 多角度審視推薦系統 推薦系統工程實現 推薦系統評估 推薦系統前沿 該系列內容是參考 王喆的深度學習推薦系統 和深度學習推薦系統 書籍 整理的,作為自己的學習筆記...

系統架構 氣象監測系統架構 氣象監測系統架構

ft qc6氣象監測系統架構 風途科技 fengtu降水變化對農業生產的影響。在農業生產過程中,水資源起著重要的作用,農作物吸收的水資源,主要是地表水 地下水和大氣降水,隨著社會的不斷發展,水資源不斷減少,並且水資源也出現汙染的情況,使農業生產用水問題越來越嚴重。據相關報道,我國灌溉作物面積逐漸減少...

系統架構 系統架構師

一 什麼是架構師 是乙個既需要掌控整體又需要洞悉區域性瓶頸並依據具體的業務場景給出解決方案的團隊領導型人物。架構師需要能夠識別定義並確認需求,能夠進行系統分解形成整體架構,能夠正確地技術選型,能夠制定技術規格說明並有效推動實施落地。按 togaf 的定義,架構師的職責是了解並關注實際上關係重大但未變...