微服務與Spring Cloud概述

微服務與Spring Cloud

隨着互聯網的快速發展, 雲計算近十年也獲得蓬勃發展, 企業的IT環境和IT架構也逐漸在發生變革,從過去的單體應用架構發展爲至今普遍流行的微服務架構。 微服務是一種架構風格, 能給軟件應用開發帶來很大的便利,可是微服務的實施和落地會面臨很大的挑戰, 所以須要一套完整的微服務解決方案。 在Java領域,Spring框架的出現給Java企業級軟件開發帶來 了福音, 提升了開發效率。 在2014年末,Spring團隊推出Spring Cloud, 目標使其成爲Java 領域微服務架構落地的標準,發展至今,Spring Cloud已經成爲Java領域落地微服務架構的完整解決方案, 爲企業IT架構變革保駕護航。

微服務架構概述

1.應用架構的發展

應用是可獨立運行的程序代碼, 提供相對完善的業務功能。 目前軟件架構有三種架構類型, 分別是業務架構、應用架構、技術架構。 它們之間的關係是業務架構決定應用架構, 技術架構支撐應用架構。 架構的發展歷程是從單體架構、分佈式架構、SOA架構再到微服務架構。git

架構演變圖

1.1 單體架構

單體架構在Java領域能夠理解爲一個Java Web應用程序,包含表現層、業務層、數據訪問層,從controller到service再到dao,就像一條單行道,從頭一路走到底,沒有任何業務的拆分,開發完畢以後就是一個超級大型的War包部署。簡單的單體架構示例圖以下:github

單體架構圖
這種開發方式對於大型應用來講很是複雜,也有「單體地獄」的稱號。
咱們來講說單體架構的優缺點:
單體架構的優勢:spring

  1. 易於開發:開發人員使用當前開發工具在短期內就能夠開發出單體應用。
  2. 易於測試:由於不須要依賴其餘接口,測試能夠節約不少時間。
  3. 易於部署:你只須要將目錄部署在運行環境中便可。

單體架構的缺點:數據庫

  1. 靈活度不夠:若是程序有任何修改, 修改的不僅是一個點, 而是自上而下地去修改,測試時必須等到整個程序部署完後才能看出效果。 在開發過程可能須要等待其餘開發 人員開發完成後才能完成部署,下降了團隊的靈活性。
  2. 下降系統的性能:本來能夠直接訪問數據庫可是如今多了一層。 即便只包含一個功能點, 也須要在各個層寫上代碼。
  3. 系統啓動慢:一個進程包含了全部業務邏輯, 涉及的啓動模塊過多, 致使系統的啓動 時間延長。
  4. 系統擴展性比較差:增長新東西的時候不能針對單個點增長, 要全局性地增長。 牽一 發而動全身。

1.2 分佈式架構

分佈式架構就是在傳統的單體架構的基礎上,按照業務垂直切分,每一個應用都是單體架構,經過API相互調用。緩存

分佈式架構圖
分佈式架構的優缺點:
優勢:服務器

  1. 依賴解耦
  2. 理解清晰

缺點:微信

  1. 進程間調用的可靠性低
  2. 實現技術複雜

1.3 SOA架構

SOA(Service-Oriented Architecture)是指面向服務的架構,面向服務的架構是一種軟件體系結構, 其應用程序的不一樣組件經過網絡上的通訊協議向其餘組件提供服務或消費服務,因此也是一種分佈式架構。簡單來講,SOA是不一樣業務創建不一樣 的服務, 服務之間的數據交互粗粒度能夠經過服務接口分級, 這樣鬆散耦合提升服務的可重用性,也讓業務邏輯變得可組合, 而且每一個服務能夠根據使用狀況作出合理的分佈式部署,從而讓服務變得規範,高性能,高可用。網絡

SOA架構中有兩個主要角色:服務提供者(Provider)和服務消費者(Consumer)。 阿里開源的Dubbo是SOA的典型實現。
SOA架構的優缺點:
優勢:架構

  1. 把模塊拆分,使用接口通訊,下降模塊之間的耦合度
  2. 把項目拆分紅若干子項目,不一樣團隊負責不一樣的子項目
  3. 增長功能時只須要增長一個子項目,調用其餘系統的接口便可
  4. 可靈活地進行分佈式部署

缺點:框架

  1. 系統之間交互須要遠程通訊
  2. 接口開發增長工做量

1.4 微服務架構

微服務架構在某種程度上是SOA架構繼續發展的下一步,微服務的概念最先源千Martin Flower的《Microservice》。整體來說,微服務是一種架構風格,對於一個大型複雜的業務系統,它的業務功能能夠拆分爲多個相互獨立的微服務,各個服務之間是鬆耦合的,經過各類遠程協議進行同步/異步通訊,各微服務都可被獨立部署、擴/縮容以及服務升/降級。

2. 微服務解決方案

現今微服務架構十分火爆,而採用微服務構建系統也會帶來更清晰的業務劃分和可擴展性。支持微服務的技術棧也是多種多樣。這裏主要介紹兩種實現微服務的解決方案:

2.1 基於Spring Cloud的微服務解決方案

基於Spring Cloud的微服務解決方案也有人稱爲「Spring系微服務」,Spring Cloud的技術選型是中立的,Spring Cloud框架提供微服務落地方案主要有如下三種:

Spring Cloud的三種解決方案

2.2 基於Dubbo實現微服務解決方案

基於阿里開源中間件Dubbo構建微服務解決方案有人也稱爲「阿里系微服務」,可是Dubbo將來的定位並非要成爲一個微服務的全面解決方案,而是專一於RPC領域,成爲微服務生態體系中的一個重要組件。至於微服務衍化出的服務治理需求,Dubbo正在積極適配開源解決方案,而且已經啓動獨立的開源項目予以支持,例如Nacos等。Nacos的定位是一個更易於幫助構建原生雲應用的動態服務發現、配置和服務管理平臺。所以,基於Dubbo的微服務解決方案是:Dubbo + Nacos + 其餘組件。

Spring Cloud概述

中間件概述

中間件與操做系統、數據庫並列爲傳統基礎軟件的三駕馬車。其中,中間件也是難度極高的軟件工程。傳統中間件的概念,誕生於上一個 「分佈式 」 計算的年代,也就是小規模局域網中的服務器/客戶端計算模式,在操做系統之上、應用軟件之下的 "中間層「 軟件。

隨着互聯網的快速發展,以及雲計算的出現, 企業的IT架構正在發生深入的變革。在這個過程當中,軟件向大規模互聯網雲服務演化,不管是操做系統仍是數據庫都發生了深入的變化,中間件也在這個過程不斷演進和擴大本身的邊界。中間件向下屏蔽異構的硬件、軟件、網絡等計算資源,向上提供應用開發、運行、維護等全生命週期的統一計算環境與管理,屬千承上啓下的中間鏈接層,對企業來講有着極其重要的價值。中間件本質上能夠歸屬爲技術架構 ,常見的中間件分別是服務治理中間件(例如: Dubbo 等RP C框架)、配置中心、全鏈路監控、分佈式事務、分佈式定時任務、消息中間件、API網關、分佈式緩存、數據庫中間 件等。

Spring Cloud是什麼?

Spring Cloud也是一箇中間件。它目前由Spring官方開發維護,基於Spring Boot開發,提供一套完整的微服務解決方案。包括服務註冊與發現、配置中心、全鏈路監控、API網關、熔斷器等選型中立的開源組件,能夠隨需擴展和替換組裝。Spring Cloud項目自從推出以來,到目前爲止一直在高速迭代。Spring Cloud技術團隊於2018年6月19日發佈了Spring Cloud的重大里程碑Finchley版本。

Spring Cloud項目模塊

Spring Cloud是一個開源項目集合,包括不少子項目。具體項目能夠在GitHub上查看.由於 Spring Cloud的子項目居多, 每一個子項目有本身的版本號,爲了對Spring Cloud總體進行版本編號,肯定一個可用千生產上的版本標識。這些版本採用倫敦地鐵站的名字,按名稱首字母排序, 好比Dalston版,Edgware版,Finchley。可是咱們通常都會簡稱爲 D版、E版、F版等。

如下是Spring Cloud部分組件列表:
Spring Cloud部分組件列表

我的微信公衆號,歡迎一塊兒討論:
公衆號二維碼

相關文章
相關標籤/搜索