Spring Cloud:第一章:基本介紹

Spring Cloud中文網(wǎng)
Spring Cloud 是什么?

Spring Cloud 是一系列框架的有序集合,將市面上開發(fā)得比較好的模塊集成進去,進行封裝,從而減少了各模塊的開發(fā)成本。
在這里插入圖片描述在這里插入圖片描述


在這里插入圖片描述

Spring Cloud 優(yōu)缺點

基于注解,沒有配置文件,解耦的
Spring Cloud 和 Dubbo 對比

Dubbo 只是實現(xiàn)了服務(wù)治理,而 Spring Cloud 實現(xiàn)了微服務(wù)架構(gòu)的方方面面,服務(wù)治理只是其中的一個方面。Spring Cloud 基于 Spring Boot,基于http協(xié)議,Dubbo基于RPC協(xié)議。
SpringCloud分布式開發(fā)

通過spring cloud Eureka實現(xiàn)高可用的服務(wù)注冊中心以及實現(xiàn)微服務(wù)的注冊與發(fā)現(xiàn);通過spring cloud ribbon或feign實現(xiàn)服務(wù)間負載均衡的接口調(diào)用,同時,為了分布式系統(tǒng)更為健壯,以避免服務(wù)調(diào)用使用spring cloud hystrix來進行包裝,實現(xiàn)線程隔離并加入熔斷機制,以避免在微服務(wù)架構(gòu)中因個別服務(wù)出現(xiàn)異常而引起級聯(lián)故障蔓延。
五大常用spring cloud子項目

服務(wù)發(fā)現(xiàn)——Netflix Eureka

客服端負載均衡——Netflix Ribbon

斷路器——Netflix Hystrix

服務(wù)網(wǎng)關(guān)——Netflix Zuul

分布式配置——Spring Cloud Config
服務(wù)發(fā)現(xiàn)——Netflix Eureka

服務(wù)注冊中心 :eureka-server

作用:服務(wù)注冊中心提供服務(wù)注冊功能

服務(wù)提供方:eureka-client

作用:注冊服務(wù)到服務(wù)注冊中心
客服端負載均衡——Netflix Ribbon

在Spring Cloud中,有兩種服務(wù)調(diào)用方式,一種是Ribbon+RestTemplate,另一種是Feign。

當Ribbon與Eureka配合使用時,Ribbon可自動從Eureka Server獲取服務(wù)提供者地址列表,并基于負載均衡算法,請求其中一個服務(wù)提供者實例。
斷路器——Netflix Hystrix

在分布式架構(gòu)中,當某個服務(wù)單元發(fā)生故障之后,通過斷路由器的故障監(jiān)控(類似熔斷保險絲),向調(diào)用方返回一個錯誤響應,而不是長時間的等待。這樣就不會使得線程因調(diào)用故障服務(wù)被長時間占用不釋放,避免了故障在分布式系統(tǒng)中的蔓延。

Spring Cloud Hystrix針對上述問題實現(xiàn)了斷路由器、線程隔離等一系列服務(wù)保護功能。它是基于Netflix Hystrix實現(xiàn),該框架的目標在于通過控制那些訪問遠程系統(tǒng)、服務(wù)和第三方庫的節(jié)點,從而對延遲和故障提供更強大的容錯能力。

Hystrix具備服務(wù)降級、服務(wù)熔斷、線程和信號隔離、請求緩存、請求合并以及服務(wù)監(jiān)控等強大功能。
服務(wù)網(wǎng)關(guān)——Netflix Zuul

我們在服務(wù)端實現(xiàn)的微服務(wù)接口,往往都會有一定的權(quán)限校驗機制,比如對用戶登錄狀態(tài)的校驗等;同時為了防止客戶端在發(fā)起的請求時被篡改等安全方面的考慮,還會增加一些簽名校驗的機制存在。在微服務(wù)架構(gòu)中需要對每個模塊都去修改,為了簡便也需要一套機制能夠很好的解決微服務(wù)架構(gòu)中對于微服務(wù)接口訪問時各前置校驗的冗余問題。

為了解決上面的一系列的問題,api網(wǎng)關(guān)應運而生

api網(wǎng)關(guān)是一個更加智能的應用服務(wù)器,它的定義類似于面向?qū)ο笤O(shè)計模式中的Facade模式,它的存在就像是整個微服務(wù)架構(gòu)系統(tǒng)的門面一樣,所有的外部客戶端訪問都需要經(jīng)過它來進行調(diào)度和過濾,它除了要實現(xiàn)請求路由,負載均衡,校驗過濾等功能。

spring cloud zuul通過與Eureka進行整合,將自身的服務(wù)注冊到Eureka上,同時從Eureka中獲取所有其他微服務(wù)的實例信息。這樣的設(shè)計,zuul默認將會通過服務(wù)名作為ContextPath的方式來創(chuàng)建路由映射,部分情況下,這樣的默認設(shè)置已經(jīng)可以實現(xiàn)大多數(shù)的路由需求。除了一些特殊的(比如兼容一些老的url)還需要做一些特別的配置。但是相比與之前的架構(gòu)下的運維工作量,通過引入spring cloud zuul實現(xiàn)api網(wǎng)關(guān)后,已經(jīng)能夠大大減少了。

其次,對于冗余的簽名校驗,登錄校驗在微服務(wù)架構(gòu)中的冗余問題??梢元毩⒊梢粋€單獨的服務(wù)存在,只是他們被剝離和獨立出來之后,并不是給各個微服務(wù)調(diào)用,而是在api網(wǎng)關(guān)服務(wù)商進行統(tǒng)一調(diào)用來對微服務(wù)接口做前置過濾,以實現(xiàn)微服務(wù)接口的攔截和校驗。spring cloud zuul提供了一套過濾機制,它可以很好的支持過濾的任務(wù)。
分布式配置——Spring Cloud Config

config-server 配置服務(wù)端,服務(wù)管理配置信息
config-client 客戶端,客戶端調(diào)用server端暴露接口獲取配置信息