SpringCloud 學習筆記(一)spring
Spring Cloud並非一個具體的框架,你們能夠把它理解爲一個工具箱,它提供的各種工具,能夠幫助咱們快速的構建分佈式系統。apache
基於SpringBoot框架。服務器
將Netflix的多個框架進行封裝,而且經過自動配置的方式將這些框架綁定到Spring的環境中,從而簡化了這些框架的使用。網絡
爲分佈式系統提供了配置服務器和配置客戶端,經過對它們的配置,能夠很好的管理集羣中的配置文件。架構
服務跟蹤框架,能夠與Zipkin、Apache HTrace和ELK等數據分析、服務跟蹤系統進行整合,爲服務跟蹤、解決問題提供了便利。負載均衡
用於構建消息驅動微服務的框架,該框架在Spring Boot的基礎上,整合了「Spring Integration」來鏈接消息代理中間件。框架
鏈接RabbitMQ、Kafka等消息代理的集羣消息總線。maven
等等分佈式
編譯工具:maven微服務
開發工具:IDEA
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>
Eureka提供基於REST的服務,在集羣中主要用於服務管理。
一個簡單的Eureka集羣,須要有一個Eureka服務器、若干個服務提供者。咱們能夠將業務組件註冊到Eureka服務器中,其餘客戶端組件能夠向服務器獲取服務而且進行遠程調用。
角色:Eureka服務器、Eureka客戶端(服務提供者)、Eureka客戶端(服務消費者)
服務器端 對於註冊到服務器端的服務組件,Eureka服務器並無提供後臺的存儲,這些註冊的服務實例被保存在內存的註冊中心,它們經過心跳來保持其最新狀態,這些操做均可以在內存中完成。客戶端存在着相同的機制,一樣在內存中保存了註冊表信息,這樣的機制提高了Eureka組件的性能,每次服務的請求都沒必要通過服務器端的註冊中心。
服務提供者 做爲Eureka客戶端存在的服務提供者,主要進行如下工做:第1、向服務器註冊服務;第2、發送心跳給服務器;第3、向服務器端獲取註冊列表。當客戶端註冊到服務器時,它將會提供一些關於它本身的信息給服務器端,例如本身的主機、端口、健康檢測鏈接等。
服務調用者 對於發佈到Eureka服務器的服務,使用調用者可對其進行服務查找與調用,服務調用者也是做爲客戶端存在,但其職責主要是發現與調用服務。在實際狀況中,有可能出現自己既是服務提供者,也是服務調用者的狀況,例如傳統的企業應用三層架構中,服務層會調用數據訪問層的接口進行數據操做,它自己也會提供服務給控制層使用。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
Eureka服務器支持集羣部署,每一個Eureka服務器也能夠做爲Eureka客戶端進行相互註冊與複製。
負載均衡框架Ribbon;
Ribbon是Netflix下的負載均衡項目,它在集羣中爲各個客戶端的通訊提供了支持,它主要實現中間層應用程序的負載均衡。Ribbon提供如下特性:
Ribbon主要有如下三大子模塊:
Ribbon的負載均衡器主要與集羣中的各個服務器進行通訊,負載均衡器須要提供如下基礎功能:
爲了實現負載均衡的基礎功能,Ribbon的負載均衡器有如下三大子模塊:
<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>