java B2B2C電子商務平臺分析之十------服務閘道器zuul
1. Zuul是什麼
微服務場景下,每一個微服務對外暴露了一組細粒度的服務。客戶端的請求可能會涉及到一串的服務呼叫,如果將這些微服務都暴露給客戶端,那麼會增加客戶端程式碼的複雜度。願意瞭解原始碼的朋友直接求求交流分享技術:二一四七七七五六三三
參考GOF設計模式中的Facade模式,將細粒度的服務組合起來提供一個粗粒度的服務,所有請求都匯入一個統一的入口,那麼整個服務只需要暴露一個api,對外遮蔽了服務端的實現細節,也減少了客戶端與伺服器的網路呼叫次數。這就是api gateway。
有了api gateway之後,一些與業務關係並不大的通用處理邏輯可以從api gateway中剝離出來,api gateway僅僅負責服務的編排與結果的組裝。
Spring Cloud Netflix的Zuul元件可以做反向代理的功能,透過路由定址將請求轉發到後端的粗粒度服務上,並做一些通用的邏輯處理。
2.Zuul 能做什麼
Zuul可以透過載入動態過濾機制,從而實現以下各項功能:
驗證與安全保障: 識別面向各類資源的驗證要求並拒絕那些與要求不符的請求。
審查與監控: 在邊緣位置追蹤有意義資料及統計結果,從而為我們帶來準確的生產狀態結論。
動態路由: 以動態方式根據需要將請求路由至不同後端叢集處。
壓力測試: 逐漸增加指向叢集的負載流量,從而計算效能水平。
負載分配: 為每一種負載型別分配對應容量,並棄用超出限定值的請求。
靜態響應處理: 在邊緣位置直接建立部分響應,從而避免其流入內部叢集。
多區域彈性: 跨越AWS區域進行請求路由,旨在實現ELB使用多樣化並保證邊緣位置與使用者儘可能接近。
3.Zuul的核心
Filter是Zuul的核心,用來實現對外服務的控制。Filter的生命週期有4個,分別是“PRE”、“ROUTING”、“POST”、“ERROR”,整個生命週期可以用下圖來表示。
Zuul大部分功能都是透過過濾器來實現的,這些過濾器型別對應於請求的典型生命週期。
PRE: 這種過濾器在請求被路由之前呼叫。我們可利用這種過濾器實現身份驗證、在叢集中選擇請求的微服務、記錄除錯資訊等。
ROUTING:這種過濾器將請求路由到微服務。這種過濾器用於構建傳送給微服務的請求,並使用Apache HttpClient或Netfilx Ribbon請求微服務。
POST:這種過濾器在路由到微服務以後執行。這種過濾器可用來為響應新增標準的HTTP Header、收集統計資訊和指標、將響應從微服務傳送給客戶端等。
ERROR:在其他階段發生錯誤時執行該過濾器。 除了預設的過濾器型別,Zuul還允許我們建立自定義的過濾器型別。例如,我們可以定製一種STATIC型別的過濾器,直接在Zuul中生成響應,而不將請求轉發到後端的微服務。
Zuul中預設實現的Filter
4.怎麼使用Zuul
Spring Cloud Zuul路由是微服務架構的不可或缺的一部分,提供動態路由,監控,彈性,安全等的邊緣服務。Zuul是Netflix出品的一個基於JVM路由和服務端的負載均衡器。
下面我們透過程式碼來了解Zuul是如何工作的
1.簡單使用
1、新增依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency>
引入spring-cloud-starter-zuul包
2、配置檔案
spring.application.name=gateway-service-zuul server.port=8888 #這裡的配置表示,訪問/it/** 直接重定向到** zuul.routes.baidu.path=/it/** zuul.routes.baidu.url=
3、啟動類
@SpringBootApplication @EnableZuulProxy public class GatewayServiceZuulApplication { public static void main(String[] args) { SpringApplication.run(GatewayServiceZuulApplication.class, args); } }
啟動類新增@EnableZuulProxy,支援閘道器路由。
史上最簡單的zuul案例就配置完了。
整體程式碼結構如下
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31539957/viewspace-2222428/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- java B2B2C電子商務平臺------服務閘道器zuulJavaZuul
- java B2B2C springmvc mybatis電子商務平臺原始碼-------zuul閘道器實現JavaSpringMVCMyBatis原始碼Zuul
- java B2B2C Springcloud電子商務平臺原始碼-服務閘道器過濾器JavaSpringGCCloud原始碼過濾器
- java B2B2C電子商務平臺分析之十六----Zuul的容錯回退與高可用JavaZuul
- SpringCloud系列之API閘道器(Gateway)服務ZuulSpringGCCloudAPIGatewayZuul
- java B2B2C 仿淘寶電子商城系統-服務閘道器zuul初級篇JavaZuul
- java B2B2C電子商務平臺分析之十五-----EureKa服務註冊與發現Java
- java B2B2C電子商務平臺分析之七-Spring Cloud ConfigJavaSpringCloud
- Spring Cloud Zuul API服務閘道器之請求路由SpringCloudZuulAPI路由
- java B2B2C電子商務平臺分析之十四-----註冊中心 ConsulJava
- 隨行付微服務之基於Zuul自研服務閘道器微服務Zuul
- spring cloud構建網際網路分散式微服務雲平臺-服務閘道器zuulSpringCloud分散式微服務Zuul
- java B2B2C電子商務平臺分析之九--配置中心服務化和高可用Java
- SpringCloud微服務雲架構構建B2B2C電子商務平臺分析之-服務消費(Ribbon)SpringGCCloud微服務架構
- java B2B2C原始碼電子商務平臺Java原始碼
- java B2B2C 原始碼 多級分銷springmvc mybatis多租戶電子商城系統---服務閘道器zuulJava原始碼SpringMVCMyBatisZuul
- java B2B2C原始碼電子商務平臺 -commonservice-config配置服務搭建Java原始碼
- Spring Cloud實戰系列(五) - 服務閘道器ZuulSpringCloudZuul
- java B2B2C電子商務平臺分析之八--配置中心svn示例和refreshJava
- 跟我學SpringCloud | 第十篇:服務閘道器Zuul高階篇SpringGCCloudZuul
- SpringCloud微服務雲架構構建B2B2C電子商務平臺之-(十)高可用的服務註冊中心SpringGCCloud微服務架構
- java B2B2C Springcloud電子商務平臺原始碼JavaSpringGCCloud原始碼
- java B2B2C Springcloud仿淘寶電子商城系統-服務閘道器(過濾器)JavaSpringGCCloud過濾器
- SpringCloud微服務治理三(Zuul閘道器)SpringGCCloud微服務Zuul
- idea建立springcloud專案圖文教程(zuul實現api閘道器服務)(十)IdeaSpringGCCloudZuulAPI
- java B2B2C springmvc mybatis多租戶電子商城系統-服務閘道器過濾器JavaSpringMVCMyBatis過濾器
- (十四)JAVA springboot微服務b2b2c電子商務系統- Spring Cloud構建分散式電子商務平臺JavaSpring Boot微服務Cloud分散式
- java B2B2C springmvc mybatis電子商務平臺原始碼JavaSpringMVCMyBatis原始碼
- java B2B2C電子商務平臺分析之十一------配置中心和訊息匯流排Java
- Spring Cloud入門教程(五):API服務閘道器(Zuul) 上SpringCloudAPIZuul
- 閘道器服務:zuul與nginx的效能測試對比ZuulNginx
- 《springcloud 二》SrpingCloud Zuul 微服務閘道器搭建SpringGCCloudZuul微服務
- java B2B2C Springcloud電子商務平臺原始碼 -Feign之原始碼解析JavaSpringGCCloud原始碼
- spring cloud構建java版 b2b2c電子商務雲商平臺SpringCloudJava
- 微服務閘道器Zuul遷移到Spring Cloud Gateway微服務ZuulSpringCloudGateway
- java B2B2C原始碼電子商務平臺---大話Spring CloudJava原始碼SpringCloud
- java B2B2C Springboot電子商務平臺原始碼-Feign 基本使用JavaSpring Boot原始碼
- java B2B2C Springcloud電子商務平臺原始碼-Ribbon 基本使用JavaSpringGCCloud原始碼