架構之美第五章 架構概述

2021-09-08 00:21:29 字數 2707 閱讀 6439

建築師、**家、作家、計算機設計師、網路設計師和軟體開發者都在使用「架構」這個術語,其他人也用(你有沒有聽說過「食物架構」?),然而不同的用法其結果也不同。建築與交響樂完全不同,但都有架構。而且,所有的架構師都在談論他們工作中的美,以及因此而導致的結果。建築師可能會說,一座建築應該提供適合工作或生活的環境,而且它應該看起來很美。**家可能會說,**應該能演奏,包含能夠辨明的主題,而且它應該聽起來很美。軟體架構師可能會說,系統應該對使用者友好、響應及時、可維護、沒有重大錯誤、易於安裝、可靠,應該通過標準的方式與其他系統通訊,而且也應該是美的。

這本書為你提供了一些美麗架構的詳細例子,它們來自於各類計算機系統。相對來說,計算機是比較年輕的乙個學科。因為年輕,所以不像建築、**或寫作等領域那樣,有那麼多的例子;也因為年輕,則需要更多的例子。我們希望這本書能滿足這種需要。

在你開始研究這些例子之前,我們希望你考慮以下兩個問題:

1) 什麼是架構?

2) 美麗

的架構都有哪些特性?

你會在這一章中看到架構的不同定義,每個學科都有自己的定義,

所以我們將首先**不同學科中的架構有何共同點,以及人們試圖用架構解決哪些問題。

具體來說,架構有助於確保系統能夠滿足其利益相關人的關注點,在構想、計畫、構建

和維護系統時,架構有助於處理複雜性。

然後我們將介紹架構的定義,展示如何將這個定義應用於軟體架構,因為軟體是本書後

面大部分例子關注的核心。這個定義的關鍵在於,架構由一組結構組成,這些結構的設

計目的是讓架構師、構建者,以及其他利益相關人看到他們的關注點是如何得到滿足的。

在本章末尾,我們將討論美麗架構的特性,並引用一些例子。美的核心在於概念完整性—

即一組抽象和規則,在整個系統中盡可能簡單地應用它們。

在討論中,我們將「架構」作為乙個名詞,它意味著一組工件,包括像藍圖和構建規範這樣的文件。這些工件描述了要構建的物件,在這種描述中,該物件被視為一組結構。某些人也把「架構」作為乙個動詞,用來描述建立這些工件的過程,包括由此而導致的

工作。然而,正如jim waldo和其他人曾指出的,沒有什麼過程可以保證你學了以後就能創造出好的系統架構,更不必說美的架構了(waldo 2006),所以我們將更關注工件,而非過程。

架構:「建造的藝術或科學;特別是設計和建造人類使用的建築時的藝術或實踐,同時考慮到美學因素和實用因素。」—《the shorter oxford english dictionary》(小型牛津英語字典,第5版)

在所有學科中,架構都提供了一種方式來解決共同的問題:確保建築、橋梁、樂曲、書籍、計算機、網路或系統在完成後具有某些屬性或行為。換言之,架構既是所構建系統的計畫,確保由此得到期望的特性,同時也是所構建系統的描述。維基百科上說:「根據這方面已知最早的著作,即vitruvius的『on architecture』,好的建築應該美觀(venustas)、堅固(firmitas)、實用(utilitas);架構可以說是這三方面的一種平衡和配合,沒有哪乙個方面比其他方面更重要。」

我們談到交響樂的「架構(architecture)」,反過來,又將架構(architecture)稱為「凝固的**」。—deryck cooke, 《the language of music》(**的語言)

好的系統架構展示了架構完整性。也就是說,它來自於一組設計規則,這組規則有助於減少複雜性,並可以用於指導詳細設計和系統驗證。設計規則可能包含特定的抽象,這些抽象總是以同樣的方式使用,諸如虛擬裝置等。這些規則可能表現為一種模式,如管道和過濾器。在最理想的情況下,存在一些可以用於驗證的規則,如「在裝置失效時,所有某一類的虛擬裝置都可以用任何其他同類的虛擬裝置代替」,或「所有競爭同一資源的程序必須具有相同的排程優先順序」。

當代的架構師可能會說,待構建的物件或系統必須具有以下特徵:

• 具備客戶要求的功能。

• 能夠在要求的工期內安全地構建。

• 效能足夠好。

• 可靠的。

• 可用的,並且使用時不會造成傷害。

• 安全的。

• 成本是可以接受的。

• 符合法規標準。

• 將超越前人及其競爭者。

我們將計算機系統的架構定義為一組最小的特徵集,它們決定了哪些程式將執行,以及這些程式將得到什麼結果。—gerrit blaauw 和frederick brooks, 《computer architecture》(計算機體系結構)

我們從來沒有看到過乙個複雜系統能夠很好地滿足上述特徵。架構是一種折中—決定改進其中乙個特徵常常會對其他特徵產生負面影響。架構師必須確定怎樣做是足夠好的,方法就是發現特定系統的重要關注點,以及充分滿足這些關注點的條件。架構觀點中的常見思想是結構,每種結構都由各種型別的元件及其關係構成:它們如何組合、相互呼叫、通訊、同步,以及進行其他互動。元件可以是建築中的支架橫樑或內部腔室、交響樂中的旋律、故事中的章節或人物、計算機中的cpu和記憶體、通訊棧中的層或連線到乙個網路上的處理器、協作的順序過程、物件、編譯時的巨集、構建時的指令碼。每個學科都有自己的一套元件和元件間的相互系。

從更大的範圍來說,術語「架構」總是意味著「不變的深層次結構」。—stewart brand, 《how buildings learn》

面對不斷增長的系統複雜性,以及它們內部和相互之間的互動,由一組結構形成的架構提供了對付複雜性的主要手段,目的是確保得到的系統具備所要求的特徵。結構為我們提供途徑,將系統化解為一些互動的元件。每種結構都是為了幫助架構師理解如何來滿足特定的關注點,如可變性或效能。展示某些關注點得到滿足時,可能會影響到其他方面的關注點,但架構師必須能夠說明所有關                

網路架構:構成乙個網路的通訊裝置、協議和傳輸鏈路,以及它們的組織方式。

架構 第五章 分布式架構的演進

適用於小型 小型管理系統,將所有功能都部署到乙個功能裡,簡單易用。缺點 1 效能擴充套件比較難 2 協同開發問題 3 不利於公升級維護 通過切分業務來實現各個模組獨立部署,降低了維護和部署的難度,團隊各司其職更易管理,效能擴充套件也更方便,更有針對性。缺點 公用模組無法重複利用,開發性的浪費 將各個...

深度學習之美 第五章 學習筆記

面對一堆輸入 輸出資料集合d,構建乙個模型t,使得t盡可能地擬合d中輸入資料和輸出資料的關係。其模型可以用下列公式表示 y w 1 x w0y w1 x w0 y w1 x w0這裡的w1和w0是回歸係數。線性回歸就是通過對訓練集的學習,獲得這兩個權值。線性回歸的目的就是求得一條擬合線,使得 值和真...

架構之美隨筆五 語言與架構

美 作為軟體架構的口號,並不是由旁觀者來判定的。其實早就存在一些明確的標準。可靠性 該架構能否幫助我們建立出正確 健壯的軟體。可擴充套件性 應對變化是否很容易。復用性 該解決方案是否具有同樣性,或者甚至可以將其作為乙個元件直接插入到新的應用程式中,而無需做定製開發。這部分內容,作者從之前所概括的軟體...