可擴展性


What

可擴展性指系統為了應對將來需求變化而提供的一種擴展能力,當有新的需求出現時,系統不需要或者僅需要少量修改就可以支持,無須整個系統重構或者重建。

Why

伴隨着業務的發展,能夠快速響應業務變化,並最大程度降低對現有系統的影響,是設計可擴展性好架構的主要目的。

Theory

設計具備良好可擴展性的系統,有兩個基本條件:正確預測變化、完美封裝變化。

預測變化的復雜性

  • 不能每個設計點都考慮可擴展性
  • 不能完全不考慮可擴展性
  • 所有的預測都存在出錯的可能性

How

業務維度

  • 對業務深入理解,對業務的發展方法進行預判

技術維度

  • 應對變化
    • 將“變化”封裝在一個“變化層”,將不變的部分封裝在一個獨立的“穩定層”
    • 提煉出一個“抽象層”和一個“實現層”
  • 降低模塊間的耦合度
    • 分布式服務框架
    • 分布式消息隊列

可擴展的基本思想

拆,就是將原本大一統的系統拆分成多個規模小的部分,擴展時只修改其中一部分即可,無須整個系統到處都改,通過這種方式來減少改動范圍,降低改動風險。

常見的拆分思路有如下三種

  • 面向流程拆分:將整個業務流程拆分為幾個階段,每個階段作為一部分。
  • 面向服務拆分:將系統提供的服務拆分,每個服務作為一部分。
  • 面向功能拆分:將系統提供的功能拆分,每個功能作為一部分。

各種XX性比較

  • 可擴展性:代碼完成之后,要在原來的基礎上增加新功能,只需要添加添加該功能的代碼,不需要或需要少量修改原來的代碼,對之前的代碼沒有影響,這就是可擴展
  • 可維護性:指軟件產品被修改的能力,修改包括糾正、改進或軟件對環境、需求和功能規格說明變化的適應。代碼完成之后,如果要修改部分功能,需要修改的地方很少,就是容易維護
  • 可復用性:代碼完成之后,以后開發中可以復用部分代碼,提高效率,就是復用性強
  • 靈活性:代碼完成之后,使用的地方可以通過多種方式來調用該部分的代碼,這就是靈活性好


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM