0-前言 我們一個個微服務構建好了,外部的應用如何來訪問內部各種各樣的微服務呢?在微服務架構中,後端服務往往不直接開放給調用端,而是通過一個API網關根據請求的url,路由到相應的服務。當添加API網關後,在第三方調用端和服務提供方之間就創建了一個代理層,這個代理層直接與調用方通信進行許可權控制,後將 ...
0-前言
我們一個個微服務構建好了,外部的應用如何來訪問內部各種各樣的微服務呢?在微服務架構中,後端服務往往不直接開放給調用端,而是通過一個API網關根據請求的url,路由到相應的服務。當添加API網關後,在第三方調用端和服務提供方之間就創建了一個代理層,這個代理層直接與調用方通信進行許可權控制,後將請求均衡分發給後臺服務端。
Zuul:就是一個API中間代理層,可以用來執行認證、動態路由、服務前移、負載均衡、安全、動態響應處理等;比如/api/user轉發到到user服務,/api/order轉發到到shop服務。zuul預設使用Ribbon實現負載均衡;
一、ZUUL的簡單使用
1.1、創建ZUUL模塊,添加依賴:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency>
1.2、創建配置文件,增加配置
server: port: 8081 spring: application: name: zuul # 配置Eureka地址 eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ instance: prefer-ip-address: true # 構建路由地址 zuul: prefix: /api routes: # 這裡可以自定義 user: # 匹配的路由規則 path: /user/** # 路由的目標服務名 serviceId: user order: # 匹配的路由規則 path: /order/** # 路由的目標服務名 serviceId: order
1.3、啟動類增加 @EnableZuulProxy 註解
@SpringBootApplication @EnableZuulProxy @EnableEurekaClient public class application { public static void main(String[] args) { SpringApplication.run(application.class); } }
完成
1.4、運行測試
可以看到,ZUUL已經按照配置文件的路由規則進行了路由轉發,並對服務實現了負載均衡;
ZUUL簡單使用完畢;
GITdemo地址:https://github.com/anson-yang/springclouddemo