老李聊技術:淺談微服務與springcloud

一、什麼是微服務?

1。微服務是一種架構模式或者一種架構風格。

2。微服務提倡將單一應用程式劃分成一組小的服務並且獨立部署

3。微服務之間相互配合、相互協調,每個服務執行在其獨立的程序中。

4。 服務與服務間採用輕量級通訊,通常是基於HTTP的RESTful API等。

老李聊技術:淺談微服務與springcloud

二、 微服務優點:

1。 微服務所需開發團隊小,一般2-5人就可以(當然還是以實際需求為主)

2。 系統中的各個微服務可被獨立部署,各個微服務之間是松耦合的

3。 微服務技術棧不受限,可以使用多種語言開發。

4。 每個服務足夠內聚,足夠小,比較容易聚焦

5。 開發簡單且效率高,一個服務只做一件事情

6。 易於和第三方整合,微服務允許容易且靈活的自動整合部署(持續整合工具有docker Jenkins,Hudson,bamboo等)

7 微服務只是涉及業務邏輯的程式碼,不會和前端頁面進行融合

8。 每個微服務都可以有自己的儲存能力,資料庫可自有也可以統一,十分靈活

三、微服務缺點:

1。 分散式的複雜性

2。 運維要求較高

3。 依賴系統部署

4。 介面之間調整成本高

5。 微服務需要資料的一致性(分散式事務)

老李聊技術:淺談微服務與springcloud

微服務架構

二、什麼是springcloud?

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、訊息匯流排、負載均衡、斷路器、資料監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring並沒有重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,透過Spring Boot風格進行再封裝遮蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包

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

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

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

老李聊技術:淺談微服務與springcloud

springcloud 微服務

三、springcloud核心功能

1。Eureka:註冊中心。

Eureka是一個基於REST的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。

Eureka主管服務註冊與發現,在微服務中,以後了這兩者,只需要使用服務的識別符號(==就是那個在每個服務的yml檔案中取得服務名稱==),就可以訪問到服務,不需要修改服務呼叫的配置檔案

Eureka遵循AP原則(高可用,分割槽容錯性),因為使用了自我保護機制所以保證了高可用。

2。Ribbon:負載均衡框架。Load Balance,微服務或分散式叢集中常用的一種應用

一句話:簡單來說負載均衡就是將使用者的請求ping平攤的分配到多個任務上,從而實現系統的高可用。

3。Hystrix:容錯框架,透過新增延遲閥值以及容錯的邏輯,來幫助我們控制分散式系統間元件的互動。

Hystrix是一個用於處理分散式系統延遲和容錯的開源庫。分散式系統中,依賴避免不了呼叫失敗,比如超時,異常等。Hystrix能保證在出現問題的時候,不會導致整體服務失敗,避免級聯故障,以提高分散式系統的彈性。

Hystrix類似一個“斷路器”,當系統中異常發生時,斷路器給呼叫返回一個符合預期的,可處理的FallBack,這樣就可以避免長時間無響應或丟擲異常,使故障不能再系統中蔓延,造成雪崩。

4。Feign:一個REST客戶端,目的是為了簡化Web Service客戶端的開發

Feign是一個宣告式WebService客戶端,使用方法時定義一個介面並在上面添加註解即可。Feign支援可拔插式的編碼器和解碼器。Spring Cloud對Feign進行了封裝,使其支援SpringMVC和HttpMessageConverters。Feign可以與Eureka和Ribbon組合使用以支援負載均衡。

5。Zuul:為微服務叢集提供過代理、過濾、路由等功能。

6。 Config:分散式配置中心元件,支援配置服務放在配置服務的記憶體中(即本地),也支援放在遠端Git、SVN。