天天看點

基于springCloud建構微雲架構技術分享

一,什麼是微服務

微服務英文名稱Microservice,Microservice架構模式就是将整個Web應用組織為一系列小的Web服務。這些小的Web服務可以獨立地編譯及部署,并通過各自暴露的API接口互相通訊。它們彼此互相協作,作為一個整體為使用者提供功能,卻可以獨立地進行擴。

微服務架構需要的功能或使用場景

1:我們把整個系統根據業務拆分成幾個子系統。

2:每個子系統可以部署多個應用,多個應用之間使用負載均衡。

3:需要一個服務注冊中心,所有的服務都在注冊中心注冊,負載均衡也是通過在注冊中心注冊的服務來使用一定政策來實作。

4:所有的用戶端都通過同一個網關位址通路背景的服務,通過路由配置,網關來判斷一個URL請求由哪個服務處理。請求轉發到服務上的時候也使用負載均衡。

5:服務之間有時候也需要互相通路。例如有一個使用者子產品,其他服務在處理一些業務的時候,要擷取使用者服務的使用者資料。

6:需要一個斷路器,及時處理服務調用時的逾時和錯誤,防止由于其中一個服務的問題而導緻整體系統的癱瘓。

7:還需要一個監控功能,監控每個服務調用花費的時間等。

目前主流的微服務架構:Dubbo、 SpringCloud、thrift、Hessian等,目前國内的中小企業用的大多數都是Dubbo,SpringCloud估計很少,也許有些開發同學都沒聽說過。

二,SpringCloud總體架構

構件一套完整的微服務架構需要考慮許多問題,包括API Gateway、服務間調用、服務發現、服務容錯、服務部署、資料調用等。

基于SpringCloud建構微服務架構可以通過自動配置和綁定Spring環境和其他Spring程式設計模型來實作微服務。采用Spring Boot應用程式提供的內建功能,通過幾個簡單的注釋,開發人員可以快速配置和啟用應用程式中的常見功能子產品,并使用久經考驗的Netflix元件建構大型分布式系統。

提供的微服務功能子產品包括服務發現(Eureka),斷路器(Hystrix),智能路由(Zuul)和用戶端負載均衡(Ribbon)等。

基于springCloud建構微雲架構技術分享

三,SpringCloud常用元件

  • 服務發現——Netflix Eureka
  • 客服端負載均衡——Netflix Ribbon
  • 斷路器——Netflix Hystrix
  • 服務網關——Netflix Zuul
  • 分布式配置——Spring Cloud Config

1,Eureka

基于springCloud建構微雲架構技術分享

一個RESTful服務,用來定位運作在AWS地區(Region)中的中間層服務。由兩個元件組成:Eureka伺服器和Eureka用戶端。 Eureka伺服器用作服務注冊伺服器。Eureka用戶端是一個Java用戶端,用來簡化與伺服器的互動、作為輪詢負載均衡器,并提供服務的故障切換支 持。Netflix在其生産環境中使用的是另外的用戶端,它提供基于流量、資源使用率以及出錯狀态的權重負載均衡。

2,Ribbon

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

基于springCloud建構微雲架構技術分享

Ribbon用戶端元件提供一系列完善的配置選項,比如連接配接逾時、重試、重試算法等。Ribbon内置可插拔、可定制的負載均衡元件。下面是用到的一些負載均衡政策:

- 簡單輪詢負載均衡

- 權重響應時間負載均衡

- 區域感覺輪詢負載均衡

- 随機負載均衡

Ribbon中還包括以下功能:

- 易于與服務發現元件(比如Netflix的Eureka)內建

- 使用Archaius完成運作時配置

- 使用JMX暴露運維名額,使用Servo釋出

- 多種可插拔的序列化選擇

- 異步和批處理操作

- 自動SLA架構

- 系統管理/名額控制台

3,Hystrix

基于springCloud建構微雲架構技術分享

斷路器可以防止一個應用程式多次試圖執行一個操作,即很可能失敗,允許它繼續而不等待故障恢複或者浪費 CPU 周期,而它确定該故障是持久的。斷路器模式也使應用程式能夠檢測故障是否已經解決。如果問題似乎已經得到糾正,應用程式可以嘗試調用操作。

基于springCloud建構微雲架構技術分享

斷路器增加了穩定性和靈活性,以一個系統,提供穩定性,而系統從故障中恢複,并盡量減少此故障的對性能的影響。它可以幫助快速地拒絕對一個操作,即 很可能失敗,而不是等待操作逾時(或者不傳回)的請求,以保持系統的響應時間。如果斷路器提高每次改變狀态的時間的事件,該資訊可以被用來監測由斷路器保 護系統的部件的健康狀況,或以提醒管理者當斷路器跳閘,以在打開狀态。

基于springCloud建構微雲架構技術分享

流程圖

基于springCloud建構微雲架構技術分享

4,Zuul

基于springCloud建構微雲架構技術分享

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

5,Spring Cloud Config

基于springCloud建構微雲架構技術分享

四,Spring Cloud優勢

微服務的架構那麼多比如:dubbo、Kubernetes,為什麼就要使用Spring Cloud的呢?

  • 産出于spring大家族,spring在企業級開發架構中無人能敵,來頭很大,可以保證後續的更新、完善。比如dubbo現在就差不多死了
  • 有spring Boot 這個獨立幹将可以省很多事,大大小小的活spring boot都搞的挺不錯。
  • 作為一個微服務治理的大家夥,考慮的很全面,幾乎服務治理的方方面面都考慮到了,友善開發開箱即用。
  • Spring Cloud 活躍度很高,教程很豐富,遇到問題很容易找到解決方案
  • 輕輕松松幾行代碼就完成了熔斷、均衡負責、服務中心的各種平台功能