動態網關 實際上是網關和分布式配置中心的整合,通過post手動刷新,生效
動態網關
傳統方式將路由規則配置在配置文件中,如果路由規則發生了改變,需要重啟服務器。結合整合SpringCloud Config分布式配置中心,實現動態路由規則。
在git上創建一個文件service-zuul-dev.yml
### 配置網關反向代理 zuul: routes: api-a: ### 以 /api-member/訪問轉發到會員服務 path: /api-member/** serviceId: app-itmayiedu-member api-b: ### 以 /api-order/訪問轉發到訂單服務 path: /api-order/** serviceId: app-itmayiedu-order
Maven依賴信息
新增監控中心依賴信息
<!-- actuator監控中心 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- springcloud config 2.0 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
application.yml
###服務注冊地址 eureka: client: serviceUrl: defaultZone: http://localhost:8100/eureka/ ###api網關端口號 server: port: 80 ###網關名稱 spring: application: name: service-zuul cloud: config: ####讀取后綴 profile: dev ####讀取config-server注冊地址 discovery: service-id: config-server enabled: true ###默認服務讀取eureka注冊服務列表 默認間隔30秒 ###開啟所有監控中心接口 management: endpoints: web: exposure: include: "*"
項目啟動
// zuul配置能夠使用config實現實時更新 @RefreshScope @ConfigurationProperties("zuul") public ZuulProperties zuulProperties() { return new ZuulProperties(); }
手動刷新接口
http://127.0.0.1/actuator/refresh
網關集群
Zuul網關集群使用Nginx反向代理即可,保證每台網關配置數據相同。
upstream backServer{ server 127.0.0.1:81; server 127.0.0.1:82; } server { listen 80; server_name wg.itmayiedu.com; location / { ### 指定上游服務器負載均衡服務器 proxy_pass http://backServer/; index index.html index.htm; } }
