SpringCloud微服務是什麼?

一、 SpringCloud是什麼

- 分佈式系統的簡化版(官方介紹)

- SpringCloud基於SpringBoot提供了一整套微服務的解決方案,包括服務註冊與發現,配置中心,全鏈路監控,服務網關,負載均衡,熔斷器等組件,除了基於Netflix的開源組件做高度抽象封裝之外,還有一些選型中立的開源組件

- SpringCloud利用SpringBoot的開發便利性巧妙地簡化了分佈式系統的基礎設施開發,SpringCloud爲開發人員提供了快速構建分佈式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線,全局所、決策精選、分佈式會話等等,他們都可以用SpringBoot的開發風格做到一鍵啓動和部署。

總結:

SpringCloud是分佈式微服務架構下的一站式解決方案,是各個微服務架構落地技術的幾何體,俗稱微服務全家桶。

二、SpringCloud有什麼?

(1)Netflix Eureka

一個RESTful服務,用來定位運行在AWS地區(Region)中的中間層服務。由兩個組件組成:Eureka服務器和Eureka客戶端。Eureka服務器用作服務註冊服務器。Eureka客戶端是一個java客戶端,用來簡化與服務器的交互、作爲輪詢負載均衡器,並提供服務的故障切換支持。Netflix在其生產環境中使用的是另外的客戶端,它提供基於流量、資源利用率以及出錯狀態的加權負載均衡。

(2)Netflix Hystrix

 

作用:斷路器,保護系統,控制故障範圍。

簡介:爲了保證其高可用,單個服務通常會集羣部署。由於網絡原因或者自身的原因,服務並不能保證100%可用,如果單個服務出現問題,調用這個服務就會出現線程阻塞,此時若有大量的請求湧入,Servlet容器的線程資源會被消耗完畢,導致服務癱瘓。服務與服務之間的依賴性,故障會傳播,會對整個微服務系統造成災難性的嚴重後果,這就是服務故障的“雪崩”效應。

(3)Netflix Zuul

 

作用:api網關,路由,負載均衡等多種作用

簡介:類似nginx,反向代理的功能,不過netflix自己增加了一些配合其他組件的特性。

在微服務架構中,後端服務往往不直接開放給調用端,而是通過一個API網關根據請求的url,路由到相應的服務。當添加API網關後,在第三方調用端和服務提供方之間就創建了一面牆,這面牆直接與調用方通信進行權限控制,後將請求均衡分發給後臺服務端。

(4)SpringCloudConfig

 

作用:配置管理

簡介:SpringCloud Config提供服務器端和客戶端。服務器存儲後端的默認實現使用git,因此它輕鬆支持標籤版本的配置環境,以及可以訪問用於管理內容的各種工具。

這個還是靜態的,得配合Spring Cloud Bus實現動態的配置更新。

(5)Ribbon

Ribbon,主要提供客戶側的軟件負載均衡算法。

Ribbon客戶端組件提供一系列完善的配置選項,比如連接超時、重試、重試算法等。Ribbon內置可插拔、可定製的負載均衡組件。

三、和其他的聯繫

(1)SpringBoot

SpringBoot:專注於快速方便的開發單個個體微服務(關注微觀);

SpringCloud:關注全局的微服務協調治理框架,將SpringBoot開發的一個個單體微服務組合並管理起來(關注宏觀);

SpringBoot可以離開SpringCloud獨立使用,但是SpringCloud不可以離開SpringBoot,屬於依賴關係。

(2)微服務

(a)什麼是微服務

服務化架構,也稱爲SOA架構

SOA代表面向服務的架構,將應用程序根據不同的職責劃分不同的模塊,不同的模塊直接通過特定的協議和接口進行交互,這樣使整個系統切分成很多單個組件服務來完成請求,當流量過大時通過水平擴展相應的組件來支撐,所以的組件通過交互來滿足整體的業務需求。

服務化架構是一套松耦合的架構,服務的拆分原則是服務內部高內聚,服務之間低耦合。

微服務架構,是SOA架構思想的一種擴展,更加強調服務個體的獨立性、拆分粒度更小。

總結:微服務架構想要開發一種由多個小服務組成的應用。每個服務運行於獨立的進程,並且採用輕量級交互。多數情況下是一個HTTP的資源API。這些服務具備獨立業務能力並且可以通過自動化部署方式獨立部署。這種風格使最小化集中管理。從而可以使用多種不同的編程語言和數據存儲技術。

(b)服務化架構已經可以解決大部分企業的需要了,爲什麼還要微服務呢?

微服務不再強調傳統SOA架構裏面比較重的ESB企業服務總線

微服務強調每個微服務都有自己獨立的運行空間,包括數據庫資源。

微服務架構本身來源於互聯網的思路,因此組件對外發布的服務強調了採用HTTP Rest API的方式來進行

微服務的切分粒度會更小

簡單來說,從圖中可以看出,每一個應用功能區都使用微服務完成,是相互獨立的,之間通過輕量級的通信協議(Http)進行服務通信,這樣的話,各個應用可以按實際業務需求,選擇自己的技術棧和開發語言。

所以可以看出,微服務的好處有:服務獨立、擴展性好、可靠性強,但同時,也面臨一些新的問題,比如運維複雜性,分佈式複雜性、監控複雜性等等。

(c)和SpringCloud聯繫

SpringCloud是基於SpringBoot的一整套實現微服務的框架。它提供了微服務開發所需的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分佈式會話和集羣狀態管理等組件。最重要的是,基於SpringBoot,會讓開發微服務架構非常方便。

總結:其實上面的組件也基本上都淘汰了,現在阿里巴巴的Nacos很方便,等接下來,打算再深入Nacos,再寫另一篇博客。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章