Spring CloudFinchley】-14 微服務網關Zuul的搭建與使用

      網友投稿 859 2025-04-01

      文章目錄

      官方文檔

      Zuul概述

      引入網關前后調用流程的變化

      搭建單節點的Zuul

      Step1. 創建子Module microservice-gateway-zuul

      Step2. 添加maven依賴

      Step3. 啟動類添加注解 @EnableZuulProxy

      Step4. 配置文件application.yml

      Step6. 網關功能-路由規則測試

      Step7. 網關功能-負載均衡測試

      Step8. 網關功能-Hystrix監控測試

      代碼

      官方文檔

      https://cloud.spring.io/spring-cloud-static/Finchley.SR2/single/spring-cloud.html#_router_and_filter_zuul

      Zuul概述

      Zuul的主要功能是路由轉發和過濾器。

      路由功能是微服務的一部分,比如/api/user轉發到到user服務,/api/shop轉發到到shop服務。

      zuul默認和Ribbon結合實現了負載均衡的功能。

      引入網關前后調用流程的變化

      在微服務架構中,后端服務往往不直接開放給調用端,而是通過一個API網關根據請求的url,路由到相應的服務。網關直接與調用方通信進行權限控制,后將請求均衡分發給后臺服務端

      簡單畫2個圖,來說明下引入網關后,調用流程的變化。

      不使用網關的情況:

      Spring Cloud【Finchley】-14 微服務網關Zuul的搭建與使用

      引入網關后:

      搭建單節點的Zuul

      這里我們會把zuul注冊到Eureka上

      Step1. 創建子Module microservice-gateway-zuul

      Step2. 添加maven依賴

      org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-starter-netflix-zuul

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      官方Note: the Zuul starter does not include a discovery client, so, for routes based on service IDs, you need to provide one of those on the classpath as well (Eureka is one choice). 因為我們使用serverID去做路由,所以我們這里引入了Eureka

      Step3. 啟動類添加注解 @EnableZuulProxy

      package com.artisan.microservice; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; @SpringBootApplication @EnableZuulProxy public class MicroServiceGateWayZuulApplication { public static void main(String args[]) { SpringApplication.run(MicroServiceGateWayZuulApplication.class, args); } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      通過注解@EnableZuulProxy聲明一個zuul代理,這個代理整合了Ribbon來定位注冊在Eureka上的微服務,同時還整合了hystrix實現容錯,所有經過zuul的請求都會在Hystrix命令中執行。

      Step4. 配置文件application.yml

      server: port: 4534 spring: application: name: microservice-gateway-zuul eureka: client: service-url: defaultZone: http://artisan:artisan123@localhost:8761/eureka instance: instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      觀察上面的配置文件,是沒有zuul相關的配置的,我們僅僅添加了一個zuul的依賴,同時將zuul注冊到Eureka上。 至此,一個單節點的最精簡版的zuul就搭建完成了,當然了zuul支持各種配置,我們的這個demo只是沒有用到而已。

      Step6. 網關功能-路由規則測試

      啟動注冊中心Eureka Server 項目 microservice-discovery-eureka

      啟動服務提供者micorservice-provider-user

      啟動服務消費者 micorservice-consumer-movie-ribbon

      啟動zuul網關microservice-gateway-zuul

      啟動zuul的時候,可以看到如下日志

      Mapped URL path [/microservice-provider-user/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController] Mapped URL path [/micorservice-consumer-movie-ribbon/**] onto handler of type [class org.springframework.cloud.netflix.zuul.web.ZuulController]

      1

      2

      訪問 Eureka Server頁面 http://localhost:8761/ ,查看服務注冊情況

      驗證下路由轉發的功能

      通過配置文件,我們知道zuul服務的啟動端口為 4534 ,

      通過zuul訪問服務提供者提供的服務看下

      http://localhost:4534/microservice-provider-user/user/3

      url中的microservice-provider-user為注冊在eureka上的微服務的名稱

      服務被轉發到了microservice-provider-user微服務中 ,相當于請求 http://localhost:8900/user/3

      同理,通過zuul訪問服務消費者

      http://localhost:4534/micorservice-consumer-movie-ribbon/movie/4

      服務被轉發到了micorservice-consumer-movie-ribbon微服務中 ,相當于請求 http://localhost:7902/movie/4

      默認情況下,zuul會代理所有注冊在Eureka Server上的微服務,并且Zuul的路由規則為 http://zuul_host:zuul_port/微服務在EurekaServer上的serviceId/** 被轉發到serviceId對應的微服務上。

      Step7. 網關功能-負載均衡測試

      啟動注冊中心Eureka Server 項目 microservice-discovery-eureka

      啟動多個服務提供者micorservice-provider-user ,在sts中換個端口,可啟動多個,再加個8901端口上的服務

      啟動服務消費者 micorservice-consumer-movie-ribbon

      啟動zuul網關microservice-gateway-zuul

      訪問 Eureka Server頁面 http://localhost:8761/ ,查看服務注冊情況

      訪問兩次服務提供者提供的服務,觀察后臺日志

      http://localhost:4534/microservice-provider-user/user/3 ,

      8900:

      8901:

      說明zuul整合了Ribbon負載均衡的功能

      Step8. 網關功能-Hystrix監控測試

      根據前幾篇的學習 Spring Cloud【Finchley】-10Hystrix監控 我們知道要想實現Hystrix監控中,必須要有如下幾個依賴

      查看zuul微服務的pom依賴

      前兩個具備了,只需要修改下applicaiton.yml即可。

      增加配置,開啟端點監控

      #actuator 啟用所有的監控端點 “*”號代表啟用所有的監控端點,可以單獨啟用,例如,health,info,metrics # spring boot 升為 2.0 后,為了安全,默認 Actuator 只暴露了2個端點,heath 和 info management: endpoints: web: exposure: include: "*" endpoint: health: show-details: ALWAYS

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      重啟下microservice-gateway-zuul微服務

      訪問zuul的hystrix.stream http://localhost:4534/actuator/hystrix.stream

      說明application.yml中的配置生效了。 ping 說明還未有服務調用,接下來調用下服務 ,就可以看到了

      接下來我們用Dashboard來直觀的看下

      訪問micorservice-hystrix-dashboard提供的頁面 http://localhost:8888/hystrix

      地址輸入zuul服務的 hystrix stream地址 http://localhost:4534/actuator/hystrix.stream , title 任意,點擊Monitor Stream

      多訪問幾次 http://localhost:4534/microservice-provider-user/user/3 ,觀察數據的變化 ,如下

      通過以上示例,說明zuul已經整合了Hystrix監控。 容錯后面來單獨討論

      代碼

      https://github.com/yangshangwei/SpringCloudMaster/tree/master/microservice-gateway-zuul

      NAT Spring 微服務

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:低代碼缺少的五大組件
      下一篇:Spring CloudFinchley】-13 Eureka Server HA高可用 2個/3個節點的搭建及服務注冊調用
      相關文章
      久久夜色精品国产噜噜亚洲a| a级亚洲片精品久久久久久久| 亚洲日韩欧洲无码av夜夜摸| 精品国产亚洲AV麻豆| 久久精品国产亚洲αv忘忧草| 久久精品a亚洲国产v高清不卡 | 亚洲一区二区三区不卡在线播放| 亚洲AV本道一区二区三区四区| 亚洲精品国产美女久久久| 久久精品国产精品亚洲艾草网美妙| 日韩亚洲国产综合久久久| 亚洲丶国产丶欧美一区二区三区| 亚洲综合一区无码精品| 亚洲一日韩欧美中文字幕在线| 亚洲色偷偷av男人的天堂| 久久亚洲AV成人无码电影| 日本亚洲视频在线| 亚洲丰满熟女一区二区哦| 久久亚洲欧美国产精品| 另类图片亚洲校园小说区| 亚洲国产精品尤物YW在线观看| 亚洲国产成人乱码精品女人久久久不卡 | 亚洲欧洲精品无码AV| 亚洲乱色熟女一区二区三区丝袜| 亚洲午夜福利AV一区二区无码| 亚洲熟女一区二区三区| 亚洲春色在线视频| 久久久久亚洲AV无码专区体验| 亚洲综合色丁香麻豆| 亚洲va精品中文字幕| 亚洲女女女同性video| 国产精品亚洲色婷婷99久久精品| jjzz亚洲亚洲女人| 精品亚洲视频在线观看| 久久亚洲国产成人亚| 亚洲欧洲日韩在线电影| 亚洲一级毛片在线观| 亚洲va中文字幕| 亚洲av午夜成人片精品电影| 亚洲一区二区女搞男| 亚洲a一级免费视频|