「 從0到1學習微服務SpringCloud 」06 統一配置中心Spring Cloud Config
「 從0到1學習微服務SpringCloud 」07 RabbitMq的基本使用
「 從0到1學習微服務SpringCloud 」08 構建消息驅動微服務的框架 Spring Cloud Streamnginx
假如當前有十幾個微服務服務,訂單,商品,用戶等等,那客戶端須要和每一個服務逐一打交道?這顯然是不現實的,這就須要有一個統一入口,它就是服務網關。git
這裏就不一一介紹了,感興趣的可自行查資料。今天的主角是Zuul。github
Zuul雖然在性能上和nginx無法比,但它也有它的優勢。Zuul 提供了認證鑑權,動態路由,監控,彈性,安全,負載均衡等邊緣服務,在團隊規模不大的狀況下,沒有專門負責路由開發時,使用Zuul當網關是一個快速上手的好方案。spring
nginx和Zuul是能夠配合使用的,發揮各自的優勢,使用nginx做爲負載均衡實現高併發的請求轉發,Zuul用做網關api
zuul的核心是一系列的filters, 其做用能夠類比Servlet框架的Filter,或者AOP。
過濾器之間沒有直接進行通訊,而是經過Request Context(上下文)進行數據傳遞。安全
Zuul的過濾器是由Groovy寫成,這些過濾器文件被放在Zuul Server上的特定目錄下面,Zuul會按期輪詢這些目錄,修改過的過濾器會動態的加載到Zuul Server中以便過濾請求使用。 cookie
四種過濾器
(1) PRE(前置):這種過濾器在請求被路由以前調用。咱們可利用這種過濾器實現鑑權、限流、參數校驗調整等。併發
(2) ROUTING(路由):這種過濾器將請求路由到微服務。這種過濾器用於構建發送給微服務的請求,並使用Apache HttpClient或Netfilx Ribbon請求微服務。app
(3) POST(後置):這種過濾器在路由到微服務之後執行。這種過濾器可用來爲響應添加標準的HTTP Header、收集統計信息和指標、將響應從微服務發送給客戶端、日誌等。負載均衡
(4) ERROR(錯誤):在其餘階段發生錯誤時執行該過濾器。
HTTP請->一系列過濾器->微服務->HTTP響應
1.新建一個子模塊,勾選eureka discovery和zull
(咱們這裏後面的練習就不用config組件了,由於在github修改配置有點麻煩)
並添加父子模塊的關聯,把子模塊中多餘的聲明刪掉
2.yml文件添加相關配置,入口類添加@EnableEurekaClient和@EnableZuulProxy註解
server: port: 8900 spring: application: name: api-gateway eureka: client: service-url: defaultZone: http://localhost:8761/eureka/
3.如今已經能夠作到路由的功能了,咱們來試試。啓動service-hi應用,經過網關入口進行訪問,訪問規則:網關域名/目標服務/目標接口名,下面調用service-hi服務的hi接口
4.可自定義路由,設置自定義的路徑。
配置以下,兩種方式
zuul: routes: # 方法1 # 聲明一個路由規則,名稱隨意取名就行 # 該規則爲 /myHi/** 路由到 /service-hi/** (**爲任意匹配) myHi: # 路由路徑 (路由到哪一個路徑) path: /myHi/** # 服務名 (須要路由的服務) serviceId: service-hi # 這裏須要注意一下,使用zuul進行路由,默認不傳遞cookie # 若要傳遞,添加下面的配置(內容爲空就行) sensitivedHeaders: # 方法2 # 路由聲明 簡潔寫法 服務名: 路由路徑 service-hi: /myHi/** # 忽略路徑,不作路由 ignored-patterns: - /service-hi/hi # 也可使用通配符 - /**/hi
訪問配置的路由路徑,便可訪問到相應接口啦~
已將代碼上傳到github
https://github.com/zhangwenka...
若是以爲不錯,分享給你的朋友!
THANDKS
一個立志成大腿而天天努力奮鬥的年輕人
伴學習伴成長,成長之路你並不孤單!