可擴展性

What

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

Why

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

Theory

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

預測變化的複雜性設計

  • 不能每一個設計點都考慮可擴展性
  • 不能徹底不考慮可擴展性
  • 全部的預測都存在出錯的可能性

How

業務維度

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

技術維度

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

可擴展的基本思想

拆,就是將本來大一統的系統拆分紅多個規模小的部分,擴展時只修改其中一部分便可,無須整個系統處處都改,經過這種方式來減小改動範圍,下降改動風險。隊列

常見的拆分思路有以下三種開發

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

各類XX性比較

  • 可擴展性:代碼完成以後,要在原來的基礎上增長新功能,只須要添加添加該功能的代碼,不須要或須要少許修改原來的代碼,對以前的代碼沒有影響,這就是可擴展
  • 可維護性:指軟件產品被修改的能力,修改包括糾正、改進或軟件對環境、需求和功能規格說明變化的適應。代碼完成以後,若是要修改部分功能,須要修改的地方不多,就是容易維護
  • 可複用性:代碼完成以後,之後開發中能夠複用部分代碼,提升效率,就是複用性強
  • 靈活性:代碼完成以後,使用的地方能夠經過多種方式來調用該部分的代碼,這就是靈活性好
相關文章
相關標籤/搜索