1. 程式人生 > >SpringCloud微服務簡介(一)

SpringCloud微服務簡介(一)

一起 轉發 例如 sset 雲服務 心跳檢測 因此 靈活性 dubbo

Spring Cloud簡單認識

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

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

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

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

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

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

5:服務之間有時候也需要相互訪問。例如有一個用戶模塊,其他服務在處理一些業務的時候,要獲取用戶服務的用戶數據。

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

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

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

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

跟spring boot框架一起使用的話,會讓你開發微服務架構的雲服務非常好的方便。

SpringBoot旨在簡化創建產品級的 Spring 應用和服務,簡化了配置文件,使用嵌入式web服務器,含有諸多開箱即用微服務功能

相關組件架構圖

Spring Cloud是一個基於Spring Boot實現的雲應用開發工具,它為基於JVM的雲應用開發中的配置管理、服務發現、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態管理等操作提供了一種簡單的開發方式。

Spring Cloud包含了多個子項目(針對分布式系統中涉及的多個不同開源產品),比如:Spring Cloud Config、Spring Cloud Netflix、Spring Cloud CloudFoundry、Spring Cloud AWS、Spring Cloud Security、Spring Cloud Commons、Spring Cloud Zookeeper、Spring Cloud CLI等項目。

相關組件架構圖

技術分享圖片

spring cloud子項目包括:

Spring Cloud Config:配置管理開發工具包,可以讓你把配置放到遠程服務器,目前支持本地存儲、Git以及Subversion。

Spring Cloud Bus:事件、消息總線,用於在集群(例如,配置變化事件)中傳播狀態變化,可與Spring Cloud Config聯合實現熱部署。

Spring Cloud Netflix:針對多種Netflix組件提供的開發工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。

Netflix Eureka:雲端負載均衡,一個基於 REST 的服務,用於定位服務,以實現雲端的負載均衡和中間層服務器的故障轉移。

Netflix Hystrix:容錯管理工具,旨在通過控制服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。

Netflix Zuul:邊緣服務工具,是提供動態路由,監控,彈性,安全等的邊緣服務。

Netflix Archaius:配置管理API,包含一系列配置管理API,提供動態類型化屬性、線程安全配置操作、輪詢框架、回調機制等功能。

Spring Cloud for Cloud Foundry:通過Oauth2協議綁定服務到CloudFoundry,CloudFoundry是VMware推出的開源PaaS雲平臺。

Spring Cloud Sleuth:日誌收集工具包,封裝了Dapper,Zipkin和HTrace操作。

Spring Cloud Data Flow:大數據操作工具,通過命令行方式操作數據流。

Spring Cloud Security:安全工具包,為你的應用程序添加安全控制,主要是指OAuth2。

Spring Cloud Consul:封裝了Consul操作,consul是一個服務發現與配置工具,與Docker容器可以無縫集成。

Spring Cloud Zookeeper:操作Zookeeper的工具包,用於使用zookeeper方式的服務註冊和發現。

Spring Cloud Stream:數據流操作開發包,封裝了與Redis,Rabbit、Kafka等發送接收消息。

Spring Cloud CLI:基於 Spring Boot CLI,可以讓你以命令行方式快速建立雲組件。

SpringCloud特點

1:約定優於配置

2:開箱即用、快速啟動

3:適用於各種環境

4:輕量級的組件

5:組件支持豐富,功能齊全

SpringCloud服務發現(Eureka)簡介

Eureka是Netflix開發的服務發現框架,SpringCloud將它集成在自己的子項目spring-cloud-netflix中,實現SpringCloud的服務發現功能。
為什麽要使用Eureka,因為在一個完整的系統架構中,任何單點的服務都不能保證不會中斷,因此我們需要服務發現機制,在某個節點中斷後,其它的節點能夠繼續提供服務,從而保證整個系統是高可用的。
服務發現有兩種模式:一種是客戶端發現模式,一種是服務端發現模式。Erueka采用的是客戶端發現模式。

客戶端服務發現的架構如圖:

技術分享圖片

Eureka Server會提供服務註冊服務,各個服務節點啟動後,會在Eureka Server中進行註冊,這樣Eureka Server中就有了所有服務節點的信息,並且Eureka有監控頁面,可以在頁面中直觀的看到所有註冊的服務的情況。同時Eureka有心跳機制,當某個節點服務在規定時間內沒有發送心跳信號時,Eureka會從服務註冊表中把這個服務節點移除。Eureka還提供了客戶端緩存的機制,即使所有的Eureka Server都掛掉,客戶端仍可以利用緩存中的信息調用服務節點的服務。Eureka一般配合Ribbon進行使用,Ribbon提供了客戶端負載均衡的功能,Ribbon利用從Eureka中讀取到的服務信息,在調用服務節點提供的服務時,會合理的進行負載。
Eureka通過心跳檢測、健康檢查、客戶端緩存等機制,保證了系統具有高可用和靈活性。

Eureka是Spring Cloud Netflix的一個子模塊,也是核心模塊之一。用於雲端服務發現,一個基於REST的服務,用於定位服務,以實現雲端中間層服務發現和故障轉移。

服務註冊與發現對於微服務系統來說非常重要。有了服務發現與註冊,你就不需要整天改服務調用的配置文件了,你只需要使用服務的標識符,就可以訪問到服務。他的功能類似於dubbo的註冊中心(register)。

服務發現:服務發現是微服務基礎架構的關鍵原則之一。試圖著手配置每個客戶端或某種格式的約定可以說是非常困難的和非常脆弱的。Eureka是Netflix服務發現的一種服務和客戶端。這種服務是可以被高可用性配置的和部署,並且在註冊的服務當中,每個服務的狀態可以互相復制給彼此。

服務註冊:當一個客戶端註冊到Eureka,它提供關於自己的元數據(諸如主機和端口,健康指標URL,首頁等)Eureka通過一個服務從各個實例接收心跳信息。如果心跳接收失敗超過配置的時間,實例將會正常從註冊裏面移除

下圖是基本的服務註冊和發現

技術分享圖片

SpringCloud微服務簡介(一)