Spring Cloud 第一章 基本介紹

2022-03-21 18:13:12 字數 2005 閱讀 3327

spring cloud 是一系列框架的有序集合,將市面上開發得比較好的模組整合進去,進行封裝,從而減少了各模組的開發成本。

基於註解,沒有配置檔案,解耦的

dubbo 只是實現了服務治理,而 spring cloud 實現了微服務架構的方方面面,服務治理只是其中的乙個方面。spring cloud 基於 spring boot,基於http協議,dubbo基於rpc協議。

通過spring cloud eureka實現高可用的服務註冊中心以及實現微服務的註冊與發現;通過spring cloud ribbon或feign實現服務間負載均衡的介面呼叫,同時,為了分布式系統更為健壯,以避免服務呼叫使用spring cloud hystrix來進行包裝,實現執行緒隔離並加入熔斷機制,以避免在微服務架構中因個別服務出現異常而引起級聯故障蔓延。

服務發現——netflix eureka

客服端負載均衡——netflix ribbon

斷路器——netflix hystrix

服務閘道器——netflix zuul

分布式配置——spring cloud config

服務註冊中心 :eureka-server

作用:服務註冊中心提供服務註冊功能

服務提供方:eureka-client

作用:註冊服務到服務註冊中心

在spring cloud中,有兩種服務呼叫方式,一種是ribbon+resttemplate,另一種是feign。

當ribbon與eureka配合使用時,ribbon可自動從eureka server獲取服務提供者位址列表,並基於負載均衡演算法,請求其中乙個服務提供者例項。

在分布式架構中,當某個服務單元發生故障之後,通過斷路由器的故障監控(類似熔斷保險絲),向呼叫方返回乙個錯誤響應,而不是長時間的等待。這樣就不會使得執行緒因呼叫故障服務被長時間占用不釋放,避免了故障在分布式系統中的蔓延。

spring cloud hystrix針對上述問題實現了斷路由器、執行緒隔離等一系列服務保護功能。它是基於netflix hystrix實現,該框架的目標在於通過控制那些訪問遠端系統、服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。

hystrix具備服務降級、服務熔斷、執行緒和訊號隔離、請求快取、請求合併以及服務監控等強大功能。

我們在服務端實現的微服務介面,往往都會有一定的許可權校驗機制,比如對使用者登入狀態的校驗等;同時為了防止客戶端在發起的請求時被篡改等安全方面的考慮,還會增加一些簽名校驗的機制存在。在微服務架構中需要對每個模組都去修改,為了簡便也需要一套機制能夠很好的解決微服務架構中對於微服務介面訪問時各前置校驗的冗餘問題。

為了解決上面的一系列的問題,api閘道器應運而生

api閘道器是乙個更加智慧型的應用伺服器,它的定義類似於物件導向設計模式中的facade模式,它的存在就像是整個微服務架構系統的門面一樣,所有的外部客戶端訪問都需要經過它來進行排程和過濾,它除了要實現請求路由,負載均衡,校驗過濾等功能。

spring cloud zuul通過與eureka進行整合,將自身的服務註冊到eureka上,同時從eureka中獲取所有其他微服務的例項資訊。這樣的設計,zuul預設將會通過服務名作為contextpath的方式來建立路由對映,部分情況下,這樣的預設設定已經可以實現大多數的路由需求。除了一些特殊的(比如相容一些老的url)還需要做一些特別的配置。但是相比與之前的架構下的運維工作量,通過引入spring cloud zuul實現api閘道器後,已經能夠大大減少了。

其次,對於冗餘的簽名校驗,登入校驗在微服務架構中的冗餘問題。可以獨立成乙個單獨的服務存在,只是他們被剝離和獨立出來之後,並不是給各個微服務呼叫,而是在api閘道器服務商進行統一呼叫來對微服務介面做前置過濾,以實現微服務介面的攔截和校驗。spring cloud zuul提供了一套過濾機制,它可以很好的支援過濾的任務。

第一章 python築基

print函式 輸出變數或者物件的值。接下來我們會經常用到,再次不做贅述。如果對於該函式不了解的,可以通過help print 和help print 檢視裡面引數和函式使用方式。input函式 用於接收控制台上面使用者輸入的資料。示例 name input 請輸入您的姓名 age input 請輸...

python第一章筆記 第一章 基礎

參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...

第一章 緒論

1.16 void print descending int x,int y,int z 按從大到小順序輸出三個數 print descending 1.17 status fib int k,int m,int f 求k階斐波那契序列的第m項的值f gender char schoolname 校...