關於系統設計時性能以及可擴展性的考慮


 參考:http://www.jdon.com/scalable.html,https://blog.csdn.net/chancein007/article/details/53983755,

最近被人問到在設計信息系統時,如何考慮性能及可擴展性的設計,由於當時自己沒有什么思路,沒有給出一個很好的答案,回來后自己查閱資料以及請教他人后,有了一個大致的認識。

可擴展性

可伸縮性(可擴展性)是一種對軟件系統計算處理能力的設計指標,高可伸縮性代表一種彈性,在系統擴展成長過程中,軟件能夠保證旺盛的生命力,通過很少的改動甚至只是硬件設備的添置,就能實現整個系統處理能力的線性增長,實現高吞吐量和低延遲高性能。

性能

性能是一個系統能夠同時處理用戶請求的表現能力。 性能的指標通常包括,響應時間,並發數,吞吐量,以及性能計數器等。

性能和擴展性問題

  • 什么是性能問題? 如果系統對於一個用戶訪問還很慢,那就是性能問題;
  • 什么是擴展性問題? 如果你系統對一個用戶來說是快的,但是在用戶不斷增長的高訪問量下就慢了。

可擴展性和純粹性能調優有本質區別, 可擴展性是高性能、低成本和可維護性等諸多因素的綜合考量和平衡,可擴展性講究平滑線性的性能提升,更側重於系統的水平擴展,通過廉價的服務器實現分布式計算;而普通性能優化只是單台機器的性能指標優化。他們共同點都是根據應用系統特點在吞吐量和延遲之間進行一個側重選擇,當然水平伸縮分區后會帶來CAP定理約束。

軟件的可擴展性設計非常重要,但又比較難以掌握,業界試圖通過雲計算或高並發語言等方式節省開發者精力,但是,無論采取什么技術,如果應用系統內部是鐵板一塊,例如嚴重依賴數據庫,系統達到一定訪問規模,負載都集中到一兩台數據庫服務器上,這時進行分區擴展伸縮就比較困難,正如Hibernate框架創建人Gavin King所說:關系數據庫是最不可擴展的。

對於Fabric網絡來說,考慮性能和可擴展性問題時。我們可以通過給一個org部署多個peer節點,同時在應用前端部署多個應用服務器,然后通過負載均衡技術來降低單個服務器的負載,后台Kafka也可以部署多個服務器來提升Ordering Service速度。

http://www.cnblogs.com/loveis715/p/5097475.html這篇文章講的非常詳細,從中受教頗多。


免責聲明!

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



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