软件架构的发展及研究现状
軟件架構研究現狀
軟件架構的發展經歷了單體架構、分布式架構、SOA架構、微服務架構四個階段。
1.3.1 單體架構
Web應用程序發展的早期,大部分web工程師將所有的功能集成在一個項目工程中,所有功能打在一個war包中部署到服務器,通過部署應用集群和數據庫集群來提高系統的性能。這種模式下,項目架構簡單,前期開發成本低、周期短,開發效率高,模塊之間交互采用本地方法調用、容易部署、容易測試。但缺點也很明顯:全部功能集成在一個工程中,大于大型項目不易開發、擴展和維護。版本迭代速度逐漸變慢,修改一個地方就要將整個應用全部編譯、部署、啟動,開發及測試周期過長。可擴展性差,通過集群的方式來實現水平擴展,無法針對某業務按需伸縮。
1.3.2 分布式架構
針對單體架構的不足,未來適應大型項目的開發需求,許多公司將一個單體系統按業務垂直差分為若干系統,系統之間通過網絡交互來完成用戶的業務處理,每個系統可分布式部署,這種架構成為分布式架構。分布式架構為系統提供了負載均衡能力,降低了各模塊之間的代碼耦合度,提升了系統的靈活性。缺點是子系統之間存在數據冗余、功能冗余,耦合性高。按需伸縮粒度不夠,對同一個子系統中的不同的業務無法實現。
1.3.3 SOA架構
SOA是一種面向服務的架構,基于分布式架構,它將不同業務功能按服務進行拆分并通過這些服務之間定義良好的接口和協議聯系起來。優點是將重復的功能抽取為服務,提供開發效率,提高系提供的可重用性、可維護性。可以針對不同服務的特點按需伸縮。缺點是系統與服務的界限模糊,導致抽取的服務粒度過大,系統與服務之間耦合性高。雖然使用了ESB,但是服務的接口協議不固定,種類繁多,不利于系統維護。
1.3.4微服務架構
基于SOA架構的思想,為了滿足移動互聯網對大型項目及多客戶端的需求,對服務層進行細粒度的拆分,所拆分的 每個服務只完成某個特定的業務功能,比如訂單服務只實現訂單相關的業務,用戶服務實現用戶管理相關的業務等等,服務的粒度很小,所以稱為微服務架構。優點是服務拆分粒度更細,有利于資源重復利用,提高開發效率。可以更加精準的制定每個服務的優化方案,按需伸縮。適用于互聯網時代,產品迭代周期更短。但缺點也很明顯開發的復雜性增加,因為一個業務流程需要多個微服務通過網絡交互來完成。微服務過多,服務治理成本高,不利于系統維護。所以不適合小項目的架構。
2014 年,由 Martin Fowler 與 James Lewis 共同提出微服務概念。微服務架構可以視為 SOA 的一種實現較早使用微服務的 Netflix 認為微服務是細粒度的 SOA。微服務架構如圖 1-1 所示,微服務與 SOA 對比如表 1-2 所示。微服務對應用進行更細粒度拆分,各個服務之間通過 RESTful API 或 RPC(Remote Procedure Call)通信。
2016 年,Pivotal 團隊發布 Spring Cloud服務治理框架,該框架基于 Spring Boot[5]快速構建。Spring Boot 在 Spring 框架的基礎上進行改良,遵循約定優于配置的原則簡化 Spring 繁瑣的配置。Spring 最大的貢獻在于面向切面編程(AOP,Aspect Oriented Programming)和控制反轉(IoC,Inversion of Control),目前,Spring 在后端開發中仍處于主導地址。Spring Cloud 包含了 Spring Boot 的優良特性,構建了包含服務發現與注冊、服務熔斷、負載均衡、網關路由及鏈路追蹤等組件的整套解決方案。Spring Cloud 第一代基于 Spring Cloud Netflix,由于 Spring Cloud Netflix 進入維護狀態,第二代基于阿里巴巴團隊開源的 Spring Cloud Alibaba,目前,Spring Cloud Alibaba 已經成功孵化。Spring Cloud Alibaba 將阿里團隊優秀的開源組件進行整合,包含 Nacos、Sentinel、RocketMQ 及 Spring Cloud Gateway 等組件,目前已經得到廣泛的應用。
總結
以上是生活随笔為你收集整理的软件架构的发展及研究现状的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python 每日一技】文本查找和替换
- 下一篇: 16位44.1K的纯WAV播放器实现(模