<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>
    火鳳凰

    分布式單塊系統需要面臨哪四個問題

    分享
  • Simon 2 風險管理(專業級)RM/PL CICSA
    Simon2 風險管理(專業級)RM/PL CICSA

    分布式單塊系統需要面臨以下四個問題:

    • 業務復雜度問題:對于大多數系統而言,架構設計是為了滿足業務需求的。衡量架構好壞與否的一個重要方面是看其面對復雜業務變更時所應該具有的靈活性,也就是我們通常所說的可擴展性(Extensibility)。可擴展性是指系統在經歷不可避免的變更時所具有的靈活性,與針對提供這樣的靈活性所要付出的成本進行平衡的能力。所謂可擴展,可擴展的是業務。即當往SystemA中添加新業務NewSubSystem時,如果不需要改變原有的各個子系統而只需把新業務封閉在一個新的子系統中就能完成整體業務的升級,我們就可以認為系統具有較好的可擴展性。顯然,單塊系統不具備良好的可擴展性,因為對系統業務的任何一處進行修改,都需要重新構建整個系統并進行發布。單塊系統內部沒有根據業務結構進行合理的業務拆分是導致其可擴展性低下的主要原因。

    • 代碼腐化問題:在軟件開發過程中,代碼腐化在一定程度上是一種不可避免的現象,關鍵是腐化的時間和程度與整個產品生命周期之間的關聯關系。在產品的鼎盛時期,如果出現大量的代碼腐化會對產品的發展帶來巨大危害。在單塊系統中,由于缺乏合理的業務和技術實現邊界,隨著產品業務功能的增多,當出現缺陷時,有可能引起缺陷的原因組合就會比較多,這會導致分析、定位和修復缺陷的成本相應增高,也就意味著缺陷的平均修復周期可能會花費更長時間,從而影響到產品的正常迭代和演進。同時,隨著功能不斷疊加,單塊系統的代碼結構也日益復雜,在開發人員對全局功能缺乏深度理解的情況下,修復一個缺陷的同時還有可能引入其他的缺陷,在很多技術團隊并不具備完善的自動化測試機制的客觀條件下,很可能導致問題越修越多的不良循環。

    • 團隊問題:互聯網行業由于產品價值與市場時機密切相關,普遍崇尚快速試錯和迭代發布,很多公司或組織會在比較短的時間內擴充產品功能和開發團隊,也就意味著對于過程資產建設和人才培養等方面并不會投入太多的成本,這就要求新加入團隊的成員能夠快速融入團隊并進行代碼開發和維護。然而,由于在單塊系統中所有的業務和代碼在很大程度上無序地混合在一起,存在大量錯綜復雜的業務和代碼結構、由于歷史原因所造成的迥然不同的開發風格以及看似復雜但已經不被使用的遺留代碼,使得新員工了解行業背景、熟悉應用程序業務、配置本地開發環境等看似簡單的任務都變得并不簡單。

    • 伸縮性問題:前面講到單塊系統的可擴展性很差,實際上它的可伸縮性同樣很有問題。所謂可伸縮(Scalability),伸縮的是性能,即當系統性能出現問題時,如果我們只需要簡單添加應用服務器等硬件設備就能避免系統出現性能瓶頸,那么該系統無疑具備較高的可伸縮性。通常,我們會考慮采用水平伸縮的方法實現可伸縮性。當考慮水平伸縮時,一般的做法是建立一個集群,通過在集群中不斷地添加新節點,然后借助前端的負載均衡器,將用戶的請求按照某種算法分配到不同的節點上。但是,由于單塊系統的所有程序代碼都運行在服務器上的同一個進程中,內存密集型和CPU密集型并存,也就要求所有應用的服務器都必須有足夠的內存和強勁的 CPU 來滿足需求。這種方法的成本會比較高,而且資源利用率通常都比較低下。

  • 寫回答
    亚洲 欧美 自拍 唯美 另类