zuul 路由(router)
zuul 過濾器(filter )
服務閘道器是微服務架構中乙個不可或缺的部分。通過服務閘道器統一向外系統提供rest api的過程中,除了具備服務路由、均衡負載功能之外,它還具備了許可權控制(鑑權)等功能。spring cloud netflix中的zuul就擔任了這樣的乙個角色,為微服務架構提供了前門保護的作用,同時將許可權控制這些較重的非業務邏輯內容遷移到服務路由層面,使得服務集群主體能夠具備更高的可復用性和可測試性。
zuul官網:
1)新建乙個服務
2)引入依賴
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-netflix-zuulartifactid
>
dependency
>
>
>
org.springframework.cloudgroupid
>
>
spring-cloud-starter-netflix-eureka-clientartifactid
>
dependency
>
3)編寫啟動類@enableeurekaclient
// 開啟eureka客戶端
@enablezuulproxy
// 開啟服務閘道器
public
class
}4)配置zuul
server.port=8885
# springcloud-consumer:指定路由id,名字是自定義的
zuul.routes.springcloud-consumer.path=/consumer/**
zuul.routes.springcloud-consumer.url=springcloud-consumer
# 讓zuul去eureka獲取服務
# 獲取服務列表的週期
eureka.client.registry-fetch-interval-seconds=5
# eureka的服務位址
# 當呼叫gethostname獲取例項的hostname時,返回ip而不是host名稱
eureka.instance.prefer-ip-address=true
# 指定ip位址
eureka.instance.ip-address=127.0.0.1
5)測試先啟動 eureka服務,再啟動其他服務
訪問 http://localhost:8885/consumer/queryuserlist
可以看出,zuul服務閘道器已經可以正常運作了。
這便是 zuul服務閘道器中路由(router)的功能。接下來我們來了解zuul的另一大功能—過濾器(filter)。
請求鑑權:一般放在pre型別,如果發現沒有訪問許可權,直接就攔截了
異常處理:一般會在error型別和post型別過濾器中結合來處理。
服務呼叫時長統計:pre和post結合使用。
filter的型別
filter 的生命週期有 4 個,分別是 「pre」、「routing」、「post」 和「error」。
pre:這種過濾器在請求被路由之前呼叫。我們可利用這種過濾器實現身份驗證、在集群中選擇請求的微服務、記錄除錯資訊等。
routing:這種過濾器將請求路由到微服務。這種過濾器用於構建傳送給微服務的請求,並使用 apache httpclient 或 netfilx ribbon 請求微服務。
post:這種過濾器在路由到微服務以後執行。這種過濾器可用來為響應新增標準的 http header、收集統計資訊和指標、將響應從微服務傳送給客戶端等。
error:在其他階段發生錯誤時執行該過濾器。 除了預設的過濾器型別,zuul 還允許我們建立自定義的過濾器型別。例如,我們可以定製一種 static 型別的過濾器,直接在 zuul 中生成響應,而不將請求**到後端的微服務。
異常流程:
zuul中filter的預設執行順序
Spring Cloud系列(六) 配置中心
本篇要介紹的配置中心就是要把所有微服務需要使用的配置值放在同乙個地方統一管理,可以分為不同的版本,不同的環境,當要修改某個配置值時,不管是哪個服務,都可以在同乙個地方做出修改。spring cloud配置中心的架構大致如下 repo可以是本地,可以是git倉庫,可以是svn倉庫,配置中心分為服務端和...
springcloud系列六 整合security
eureka自帶了乙個管理介面,如果不加密,所有人都可以進行訪問這個位址,這樣安全問題就來了,所以需要對其進行加密認證 那麼該如何進行整合呢 1 在註冊中心模組新增依賴 org.springframework.boot spring boot starter security 2 yml檔案配置 s...
Spring Cloud系列勘誤
spring cloud系列已經寫完了,這是一系列的學習筆記,由於寫作匆忙,難免會有出錯的文字或者 實在抱歉。目前作者已經發現了幾處有錯誤的地方,為了小夥伴們在學習的過程中不陷入泥淖,我將已發現的幾處錯誤先列出來,如果小夥伴還有發現其他錯誤,歡迎指正。1.使用spring cloud搭建高可用服務註...