SpringCloud 學習筆記(一)

SpringCloud 學習筆記(一)spring

1.基本概念

Spring Cloud並非一個具體的框架,你們能夠把它理解爲一個工具箱,它提供的各種工具,能夠幫助咱們快速的構建分佈式系統。apache

基於SpringBoot框架。服務器

2.組成部分

2.1 Spring Cloud Netflix 模塊

將Netflix的多個框架進行封裝,而且經過自動配置的方式將這些框架綁定到Spring的環境中,從而簡化了這些框架的使用。網絡

  • Eureka:基於REST服務的分佈式中間件,主要用於服務管理。
  • Hystrix:容錯框架,經過添加延遲閥值以及容錯的邏輯,來幫助咱們控制分佈式系統間組件的交互。
  • Feign:一個REST客戶端,目的是爲了簡化Web Service客戶端的開發
  • Ribbon:負載均衡框架,在微服務集羣中爲各個客戶端的通訊提供支持,它主要實現中間層應用程序的負載均衡
  • Zuul:爲微服務集羣提供過代理、過濾、路由等功能。

2.2 Spring Cloud Config 模塊

爲分佈式系統提供了配置服務器和配置客戶端,經過對它們的配置,能夠很好的管理集羣中的配置文件。架構

2.3 Spring Cloud Sleuth 模塊

服務跟蹤框架,能夠與Zipkin、Apache HTrace和ELK等數據分析、服務跟蹤系統進行整合,爲服務跟蹤、解決問題提供了便利。負載均衡

2.4 Spring Cloud Stream 模塊

用於構建消息驅動微服務的框架,該框架在Spring Boot的基礎上,整合了「Spring Integration」來鏈接消息代理中間件。框架

2.5 Spring Cloud Bus 模塊

鏈接RabbitMQ、Kafka等消息代理的集羣消息總線。maven

等等分佈式

3.搭建環境

編譯工具:maven微服務

開發工具:IDEA

3.1 maven依賴

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	
    ...

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Edgware.SR5</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

    <dependencies>
        
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

    </dependencies>


</project>

3.2 Eureka服務

Eureka提供基於REST的服務,在集羣中主要用於服務管理。

一個簡單的Eureka集羣,須要有一個Eureka服務器、若干個服務提供者。咱們能夠將業務組件註冊到Eureka服務器中,其餘客戶端組件能夠向服務器獲取服務而且進行遠程調用。

角色:Eureka服務器、Eureka客戶端(服務提供者)、Eureka客戶端(服務消費者)

  • 服務器端 對於註冊到服務器端的服務組件,Eureka服務器並無提供後臺的存儲,這些註冊的服務實例被保存在內存的註冊中心,它們經過心跳來保持其最新狀態,這些操做均可以在內存中完成。客戶端存在着相同的機制,一樣在內存中保存了註冊表信息,這樣的機制提高了Eureka組件的性能,每次服務的請求都沒必要通過服務器端的註冊中心。

  • 服務提供者 做爲Eureka客戶端存在的服務提供者,主要進行如下工做:第1、向服務器註冊服務;第2、發送心跳給服務器;第3、向服務器端獲取註冊列表。當客戶端註冊到服務器時,它將會提供一些關於它本身的信息給服務器端,例如本身的主機、端口、健康檢測鏈接等。

  • 服務調用者 對於發佈到Eureka服務器的服務,使用調用者可對其進行服務查找與調用,服務調用者也是做爲客戶端存在,但其職責主要是發現與調用服務。在實際狀況中,有可能出現自己既是服務提供者,也是服務調用者的狀況,例如傳統的企業應用三層架構中,服務層會調用數據訪問層的接口進行數據操做,它自己也會提供服務給控制層使用。

3.2.1 maven依賴

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>

3.2.2 eureka服務端

Eureka服務器支持集羣部署,每一個Eureka服務器也能夠做爲Eureka客戶端進行相互註冊與複製。

3.3 Ribbon服務

負載均衡框架Ribbon;

Ribbon是Netflix下的負載均衡項目,它在集羣中爲各個客戶端的通訊提供了支持,它主要實現中間層應用程序的負載均衡。Ribbon提供如下特性:

  • 負載均衡器,可支持插拔式的負載均衡規則。
  • 對多種協議提供支持,例如HTTP、TCP、UDP。
  • 集成了負載均衡功能的客戶端。

Ribbon主要有如下三大子模塊:

  • ribbon-core:該模塊爲Ribbon項目的核心,主要包括負載均衡器接口定義、客戶端接口定義,內置的負載均衡實現等API。-
  • ribbon-eureka:爲Eureka客戶端提供的負載均衡實現類。-
  • ribbon-httpclient:對Apache的HttpClient進行封裝,該模塊提供了含有負載均衡功能的REST客戶端。

Ribbon的負載均衡器主要與集羣中的各個服務器進行通訊,負載均衡器須要提供如下基礎功能:

  • 維護服務器的IP、DNS名稱等信息。-
  • 根據特定的邏輯在服務器列表中循環。

爲了實現負載均衡的基礎功能,Ribbon的負載均衡器有如下三大子模塊:

  • Rule:一個邏輯組件,這些邏輯將會決定,從服務器列表中返回哪一個服務器實例。-
  • Ping:該組件主要使用定時器,來確保服務器網絡能夠鏈接。-
  • ServerList:服務器列表,能夠經過靜態的配置肯定負載的服務器,也能夠動態指定服務器列表。若是動態指定服務器列表,則會有後臺的線程來刷新該列表。

3.3.1 maven依賴

<dependency>
    <groupId>com.netflix.ribbon</groupId>
    <artifactId>ribbon</artifactId>
    <version>2.2.2</version>
</dependency>
<dependency>
    <groupId>com.netflix.ribbon</groupId>
    <artifactId>ribbon-httpclient</artifactId>
    <version>2.2.2</version>
</dependency>
相關文章
相關標籤/搜索