隨着互聯網的快速發展, 雲計算近十年也獲得蓬勃發展, 企業的IT環境和IT架構也逐漸在發生變革,從過去的單體應用架構發展爲至今普遍流行的微服務架構。 微服務是一種架構風格, 能給軟件應用開發帶來很大的便利,可是微服務的實施和落地會面臨很大的挑戰, 所以須要一套完整的微服務解決方案。 在Java領域,Spring框架的出現給Java企業級軟件開發帶來 了福音, 提升了開發效率。 在2014年末,Spring團隊推出Spring Cloud, 目標使其成爲Java 領域微服務架構落地的標準,發展至今,Spring Cloud已經成爲Java領域落地微服務架構的完整解決方案, 爲企業IT架構變革保駕護航。
應用是可獨立運行的程序代碼, 提供相對完善的業務功能。 目前軟件架構有三種架構類型, 分別是業務架構、應用架構、技術架構。 它們之間的關係是業務架構決定應用架構, 技術架構支撐應用架構。 架構的發展歷程是從單體架構、分佈式架構、SOA架構再到微服務架構。git
單體架構在Java領域能夠理解爲一個Java Web應用程序,包含表現層、業務層、數據訪問層,從controller到service再到dao,就像一條單行道,從頭一路走到底,沒有任何業務的拆分,開發完畢以後就是一個超級大型的War包部署。簡單的單體架構示例圖以下:github
這種開發方式對於大型應用來講很是複雜,也有「單體地獄」的稱號。
咱們來講說單體架構的優缺點:
單體架構的優勢:spring
單體架構的缺點:數據庫
分佈式架構就是在傳統的單體架構的基礎上,按照業務垂直切分,每一個應用都是單體架構,經過API相互調用。緩存
分佈式架構的優缺點:
優勢:服務器
缺點:微信
SOA(Service-Oriented Architecture)是指面向服務的架構,面向服務的架構是一種軟件體系結構, 其應用程序的不一樣組件經過網絡上的通訊協議向其餘組件提供服務或消費服務,因此也是一種分佈式架構。簡單來講,SOA是不一樣業務創建不一樣 的服務, 服務之間的數據交互粗粒度能夠經過服務接口分級, 這樣鬆散耦合提升服務的可重用性,也讓業務邏輯變得可組合, 而且每一個服務能夠根據使用狀況作出合理的分佈式部署,從而讓服務變得規範,高性能,高可用。網絡
SOA架構中有兩個主要角色:服務提供者(Provider)和服務消費者(Consumer)。 阿里開源的Dubbo是SOA的典型實現。
SOA架構的優缺點:
優勢:架構
缺點:框架
微服務架構在某種程度上是SOA架構繼續發展的下一步,微服務的概念最先源千Martin Flower的《Microservice》。整體來說,微服務是一種架構風格,對於一個大型複雜的業務系統,它的業務功能能夠拆分爲多個相互獨立的微服務,各個服務之間是鬆耦合的,經過各類遠程協議進行同步/異步通訊,各微服務都可被獨立部署、擴/縮容以及服務升/降級。
現今微服務架構十分火爆,而採用微服務構建系統也會帶來更清晰的業務劃分和可擴展性。支持微服務的技術棧也是多種多樣。這裏主要介紹兩種實現微服務的解決方案:
基於Spring Cloud的微服務解決方案也有人稱爲「Spring系微服務」,Spring Cloud的技術選型是中立的,Spring Cloud框架提供微服務落地方案主要有如下三種:
基於阿里開源中間件Dubbo構建微服務解決方案有人也稱爲「阿里系微服務」,可是Dubbo將來的定位並非要成爲一個微服務的全面解決方案,而是專一於RPC領域,成爲微服務生態體系中的一個重要組件。至於微服務衍化出的服務治理需求,Dubbo正在積極適配開源解決方案,而且已經啓動獨立的開源項目予以支持,例如Nacos等。Nacos的定位是一個更易於幫助構建原生雲應用的動態服務發現、配置和服務管理平臺。所以,基於Dubbo的微服務解決方案是:Dubbo + Nacos + 其餘組件。
中間件與操做系統、數據庫並列爲傳統基礎軟件的三駕馬車。其中,中間件也是難度極高的軟件工程。傳統中間件的概念,誕生於上一個 「分佈式 」 計算的年代,也就是小規模局域網中的服務器/客戶端計算模式,在操做系統之上、應用軟件之下的 "中間層「 軟件。
隨着互聯網的快速發展,以及雲計算的出現, 企業的IT架構正在發生深入的變革。在這個過程當中,軟件向大規模互聯網雲服務演化,不管是操做系統仍是數據庫都發生了深入的變化,中間件也在這個過程不斷演進和擴大本身的邊界。中間件向下屏蔽異構的硬件、軟件、網絡等計算資源,向上提供應用開發、運行、維護等全生命週期的統一計算環境與管理,屬千承上啓下的中間鏈接層,對企業來講有着極其重要的價值。中間件本質上能夠歸屬爲技術架構 ,常見的中間件分別是服務治理中間件(例如: Dubbo 等RP C框架)、配置中心、全鏈路監控、分佈式事務、分佈式定時任務、消息中間件、API網關、分佈式緩存、數據庫中間 件等。
Spring Cloud也是一箇中間件。它目前由Spring官方開發維護,基於Spring Boot開發,提供一套完整的微服務解決方案。包括服務註冊與發現、配置中心、全鏈路監控、API網關、熔斷器等選型中立的開源組件,能夠隨需擴展和替換組裝。Spring Cloud項目自從推出以來,到目前爲止一直在高速迭代。Spring Cloud技術團隊於2018年6月19日發佈了Spring Cloud的重大里程碑Finchley版本。
Spring Cloud是一個開源項目集合,包括不少子項目。具體項目能夠在GitHub上查看.由於 Spring Cloud的子項目居多, 每一個子項目有本身的版本號,爲了對Spring Cloud總體進行版本編號,肯定一個可用千生產上的版本標識。這些版本採用倫敦地鐵站的名字,按名稱首字母排序, 好比Dalston版,Edgware版,Finchley。可是咱們通常都會簡稱爲 D版、E版、F版等。
如下是Spring Cloud部分組件列表:
我的微信公衆號,歡迎一塊兒討論: