什么是架構(gòu)?架構(gòu)是一個系統(tǒng)的基本組織結(jié)構(gòu),涵蓋所包含的組件、組件之間的關(guān)系、組件與環(huán)境的關(guān)系、以及指導(dǎo)架構(gòu)設(shè)計和演進(jìn)的原則等內(nèi)容。經(jīng)常有人問架構(gòu)重點需要關(guān)注多少屬性,我們粗略的可以概括一下九點:
          可修改性、可測試性、可擴展性、性能、可用性、安全性、可部署性、共享性。

            ?   一、可修改性

            什么是可修改性?可修改性是指一個系統(tǒng)進(jìn)行修改的容易程度,以及系統(tǒng)適應(yīng)這些修改的靈活性。


            與可修改性相關(guān)的幾個方面:可讀性(readability)、模塊化(modularity)、可重用性(reusability)、可維護(hù)性(maintainability)

          ? ? ? ?
          可讀性涉及要素:1)寫得好。方法、函數(shù)、變量、類、模塊是否簡單明了。2)文檔齊全。代碼中注釋是否齊全。3)結(jié)構(gòu)規(guī)整。結(jié)構(gòu)清晰明了、注釋簡介規(guī)范。

             提高可讀性策略:1.提供顯示接口;2.減少雙向依賴;3.抽象公共服務(wù);4.使用繼承技術(shù);5.使用延遲綁定技術(shù)。

              ? 二、可測試性

            什么是可測試性?可測試性是指軟件系統(tǒng)通過執(zhí)行基本的測試來暴露其錯誤的難易程度。

            軟件測試包括:功能測試(白盒測試、黑盒測試)、性能測試(負(fù)載測試、壓力測試、可擴展性測試)、安全性測試、可用性測試、安裝測試、可訪問性測試。


            增強可測試性策略:1)降低系統(tǒng)復(fù)雜度(子系統(tǒng))、2)高內(nèi)聚低耦合、3)提供定義良好的接口、4)降低類的復(fù)雜性、5)正確的異常處理、6)無限循環(huán)和/或阻塞等待、7)依賴于時間的邏輯、8)并發(fā)性、9)內(nèi)存管理。

              ? 三、可擴展性


            什么是可擴展性?可擴展性重點關(guān)注的是代碼和應(yīng)用程序是否能符合將來未知的編碼而進(jìn)行的提前設(shè)計。比如:代碼設(shè)計中我們盡可能要求功能的最小化原則,接口設(shè)計的高內(nèi)聚低耦合原則,應(yīng)用程序設(shè)計子系統(tǒng)等,都和可擴展性相關(guān)。

              ? ? 四、性能

            什么是性能?性能是指系統(tǒng)能夠滿足吞吐量或時延要求程度的指標(biāo),用每秒執(zhí)行事務(wù)的數(shù)量或單個事務(wù)耗費的時間來表示。

            性能復(fù)雜度一般用大寫的O符合表示,定義為輸入變化的響應(yīng)情況,通常用執(zhí)行代碼所耗費的時間來表示。

            度量性能方法:1.使用上下文管理器度量時間 2.使用時間模塊開計時代碼 3.使用時間模塊來度量代碼性能 4.使用時間模塊度量CPU時間?

              ? 五、可用性


            程序設(shè)計的可用性主要包括以下幾點:是否符合使用者的操作心里,是否滿足性能要求,是否開發(fā)者能在系統(tǒng)真實運行的環(huán)境下進(jìn)行相應(yīng)的修改,是否程序可以進(jìn)行友好的擴展而不是僵化設(shè)計。

              ? 六、可擴展性

            可擴展性包括兩種:水平擴展和垂直擴展。

            水平擴展包括:1)活躍冗余 2)熱備份 3)故障檢測或重啟 4)緩存它 5)去偶 6)優(yōu)雅降級 7)數(shù)據(jù)接近代碼 8)按照SLA設(shè)計

            垂直擴展包括:1)向現(xiàn)有系統(tǒng)添加更多資源 2)更好地利用系統(tǒng)中的現(xiàn)有資源

              ? 七、安全性

            安全性是軟件重要的方面。信息系統(tǒng)安全架構(gòu)需要包含以下幾個方面:保密性、完整性、可用性、認(rèn)證、授權(quán)、不可否認(rèn)性。


            常見的安全漏洞:溢出錯誤(緩存溢出、算術(shù)溢出、整型溢出)、未經(jīng)驗證或驗證不當(dāng)?shù)妮斎?、不?dāng)?shù)脑L問控制、加密問題、使用HTTP而沒有使用HTTPS、不安全的認(rèn)證、弱密碼的使用、安全散列或秘鑰的重用、弱加密技術(shù)、無效或過期的證書/秘鑰、信息泄露、服務(wù)器的元信息、開放的索引頁、開發(fā)的端口、靜態(tài)條件、系統(tǒng)時鐘漂移、不安全的文件(文件夾)操作等

            Python中常見的四種安全問題:讀取輸入、表達(dá)式求值、溢出錯誤、序列化問題。

            Web應(yīng)用中的安全問題:服務(wù)器端模板注入、服務(wù)器端模板注入-回避、服務(wù)拒絕、跨站腳本攻擊等

            安全編碼的策略:輸入驗證、最簡原則、最小特權(quán)原則、清理數(shù)據(jù)、授權(quán)訪問、進(jìn)行有效的測試、多層防御實踐、定義安全需求、模型威脅、安全策略的架構(gòu)和設(shè)計

               八、可部署性

            與可部署性相關(guān)的因素:模塊結(jié)構(gòu)、產(chǎn)品運行環(huán)境和開發(fā)環(huán)境、開發(fā)生態(tài)系統(tǒng)支持、標(biāo)準(zhǔn)化配置、標(biāo)準(zhǔn)化基礎(chǔ)設(shè)施、容器的使用

               九、共享性


            面對現(xiàn)今互聯(lián)網(wǎng)蓬勃發(fā)展,出現(xiàn)了很多大數(shù)據(jù)云計算的新理念,比如:BaaS、IaaS、PaaS、SaaS、DaaS、低代碼等,我們可以理解為共享技術(shù)。比如云計算里的多租戶、為什么要上云,都是為了最大化節(jié)約社會資源,增強系統(tǒng)的可共享性,而進(jìn)行的創(chuàng)新。

            共享性涉及的要素:可分為軟件共享性和硬件共享性。

            軟件共享性的策略:虛擬機技術(shù)、云計算技術(shù)、大數(shù)據(jù)技術(shù)等;硬件共享性的策略:共享數(shù)據(jù)庫、共享硬件系統(tǒng)等

              ? ? ? ?總綱


            系統(tǒng)架構(gòu)需要關(guān)注的屬性客觀因素不外乎以上九大專題內(nèi)容,不過真實的系統(tǒng)架構(gòu)設(shè)計我們又不僅僅需要關(guān)注以上內(nèi)容,還包括系統(tǒng)的主觀因素,環(huán)境、相關(guān)利益者等都能制約系統(tǒng)的架構(gòu)。我們需要靈活運用以上的知識,比如有的架構(gòu)更關(guān)注安全性可能會舍棄部分的可用性,又比如我們?yōu)榱嗽鰪娤到y(tǒng)的可修改性,可能系統(tǒng)的可部署性又需要折中處理。我們需要融匯貫通的理解主客觀因素,平衡制約系統(tǒng)的主客觀矛盾,所以我在總結(jié)篇介紹

            系統(tǒng)架構(gòu)的核心理念:他強由他強,清風(fēng)拂山崗;他橫由他橫,明月照大江;他自狠來他自惡,我自一口真氣足。最終達(dá)到《無招》境界!

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                午夜视频在线播放 | 大伊香蕉| 精品人妻无码一区二区三区 | 黄色成人在线观看 | 调教打屁股沟羞耻扒开双男视频 |