高可擴展分布式應用程序的架構原則
Elastisys 云平臺誕生于 瑞典默奧大學 的 分布式系統研究小組 。它由一組以預測性擴展引擎為中心的工具組成,可以自動擴展云部署。近日,其官方網站發表了一篇 文章 ,介紹他們在高可擴展分布式應用程序設計和開發方面的經驗。
他們將可擴展性分成了如下四個維度:
- 性能可擴展 :性能無法完全實現線性擴展,但要盡量使用具有并發性和異步性的組件。具備完成通知功能的工作隊列要優于同步連接到數據庫。
- 可用性可擴展 : CAP理論 表明,分布式系統無法同時提供一致性、可用性和分區容錯性保證。許多大規模Web應用程序都為了可用性和分區容錯性而犧牲了強一致性,而后者則有賴于 最終一致性 來保證。
- 維護可擴展 :軟件和服務器都需要維護。在使用平臺&工具監控和更新應用程序時,要盡可能地自動化。
- 成本可擴展 :總擁有成本包括開發、維護和運營支出。在設計一個系統時,要在重用現有組件和完全新開發組件之間進行權衡。現有組件很少能完全滿足需求,但修改現有組件的成本還是可能低于開發一個完全不同的方案。另外,使用符合行業標準的技術使組織更容易聘到專家,而發布獨有的開源方案則可能幫助組織從社區中挖掘人才。 </ul>
- 避免單點故障:任何東西都要有兩個。這增加了成本和復雜度,但卻能在可用性和負載性能上獲益。而且,這有助于設計者采用一種分布式優先的思維。
- 橫向擴展,而不是縱向擴展:升級服務器(縱向)的成本是指數增長的,而增加另一臺商用服務器(橫向)的成本是線性增長的。
- 盡量減少應用程序核心所需要完成的工作。
- API優先:將應用程序視為一個提供API的服務,而且,不假定服務的客戶端類型(手機應用、Web站點、桌面應用程序)。
- 總是緩存。
- 提供盡可能新的數據:用戶可能不需要立即看到最新的數據,最終一致性可以帶來更高的可用性。
- 設計時要考慮維護和自動化:不要低估應用程序維護所需要的時間和工作量。軟件首次公開發布是一個值得稱贊的里程碑,但也標志著真正的工作要開始了。
- 寧異步,不同步。
- 努力實現無狀態:狀態信息要保存在盡可能少的地方,而且要保存在專門設計的組件中。
- 為故障做好準備:將故障對終端用戶的影響最小化。
以上各項,他們在設計應用程序時都會考慮和權衡。下面是他們根據上述內容總結出的10個設計原則:
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!