動態閘道器 實際上是閘道器和分散式配置中心的整合,通過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; } }