Spring Cloudwwwhj8828net的核心成員13094399995
什麽是微服務
微服務的概念源於Martin Fowler所寫的一篇文章“Microservices”。
微服務架構是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。每個服務運行在其獨立的進程中,服務與服務間采用輕量級的通信機制互相溝通(通常是基於HTTP的RESTful API)。每個服務都圍繞著具體業務進行構建,並且能夠被獨立地部署到生產環境、類生產環境等。另外,應盡量避免統一的、集中式的服務管理機制,對具體的一個服務而言,應根據業務上下文,選擇合適的語言、工具對其進行構建。
微服務是一種架構風格,一個大型復雜軟件應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的。每個微服務僅關註於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表著一個小的業務能力。
高並發架構系列:Spring Cloud的核心成員、以及架構實現詳細介紹
SOA和微服務的區別
Martin Fowler提出來這一概念可以說把SOA的理念繼續升華,精進了一步。 微服務架構強調的第一個重點就是業務系統需要徹底的組件化和服務化,原有的單個業務系統會拆分為多個可以獨立開發,設計,運行和運維的小應用。這些小應用之間通過服務完成交互和集成。
從服務粒度上,既然是微,必然微服務更倡導服務的細粒度
從部署方式上,這個是最大的不同,對比以往的Java EE部署架構,通過展現層打包WARs,業務層劃分到JARs最後部署為EAR一個大包,而微服務則把應用拆分成為一個一個的單個服務,應用Docker技術,不依賴任何服務器和數據模型,是一個 全棧應用,可以通過自動化方式獨立部署,每個服務運行在自己的進程。
如果一句話來談SOA和微服務的區別,即微服務不再強調傳統SOA架構裏面比較重的ESB企業服務總線,同時SOA的思想進入到單個業務系統內部實現真正的組件化。
微服務架構優勢
1.粒度更細(可維護和效率)
在將應用分解,每一個微服務專註於單一功能,並通過定義良好的接口清晰表述服務邊界。由於體積小、復雜度低,每個微服務可由一個小規模開發團隊完全掌控,易於保持高可維護性和開發效率。
2.獨立部署
由於微服務具備獨立的運行進程,所以每個微服務也可以獨立部署。
3.容錯
在微服務架構下,故障會被隔離在單個服務中。若設計良好,其他服務可通過重試、平穩退化等機制實現應用層面的容錯。
4.擴展
單塊架構應用也可以實現橫向擴展,就是將整個應用完整的復制到不同的節點。
什麽是Spring Boot
Spring Boot 框架是由 Pivotal 團隊提供的全新框架,其設計目的是用來簡化基於 Spring 應用的初始搭建以及開發過程。SpringBoot 框架使用了特定的方式來進行應用系統的配置,從而使開發人員不再需要耗費大量精力去定義模板化的配置文件。
什麽是Spring Cloud
Spring Cloud 是一個基於 Spring Boot 實現的雲應用開發工具,它為基於 JVM 的雲應用開發中的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態管理等,是微服務的一種實現。
Spring Cloud的核心成員
高並發架構系列:Spring Cloud的核心成員、以及架構實現詳細介紹
1.Spring Cloud Netflix
Spring Cloud Netflix 集成眾多Netflix的開源軟件:Eureka, Hystrix, Zuul, Archaius,組成了微服務的最重要的核心組件。
2.Netflix Eureka
服務中心,用於服務註冊與發現,一個基於 REST 的服務,用於定位服務。
3.Netflix Hystrix
熔斷器,容錯管理工具,旨在通過熔斷機制控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。
4.Netflix Zuul
Zuul 是在雲平臺上提供動態路由,監控,彈性,安全等邊緣服務的框架。
5.Netflix Archaius
配置管理API,包含一系列配置管理API,提供動態類型化屬性、線程安全配置操作、輪詢框架、回調機制等功能,可以實現動態獲取配置。
Ribbon是Netflix發布的負載均衡器,它有助於控制HTTP和TCP的客戶端的行為。為Ribbon配置服務提供者地址後,Ribbon就可基於某種負載均衡算法,自動地幫助服務消費者去請求。
Spring Cloud架構實現
通過這張圖,可以比較清楚的了解到各組件配置使用運行機制:
高並發架構系列:Spring Cloud的核心成員、以及架構實現詳細介紹
1、請求統一通過API網關(Zuul)來訪問內部服務.
2、網關接收到請求後,從註冊中心(Eureka)獲取可用服務
3、由Ribbon進行均衡負載後,分發到後端具體實例
4、微服務之間通過Feign進行通信處理業務
5、Hystrix負責處理服務超時熔斷
微服務是一種架構的理念,提出了微服務的設計原則,從理論為具體的技術落地提供了指導思想。
SpringBoot專註於快速方便的開發單個個體微服務。
SpringCloud是關註全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,
為各個服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、精選決策、分布式會話等集成服務。
SpringBoot可以離開SpringCloud獨立開發項目,但是SpringCloud離不開SpringBoot,屬於依賴關系。
SpringBoot專註於快速、方便的開發單個微服務個體,SpringCloud關註全局的服務治理框架。
微服務目前主流就Spring Cloud和Dubbo,相關的比較也可以參考:阿裏P8架構師談:微服務Dubbo和SpringCloud架構設計、優劣勢比較
Spring Cloudwwwhj8828net的核心成員13094399995