日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

gateway网关_SpringCloud技术指南系列(十二)API网关之Gateway使用

發布時間:2025/3/15 javascript 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gateway网关_SpringCloud技术指南系列(十二)API网关之Gateway使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SpringCloud技術指南系列(十二)API網關之Gateway使用

一、概述

API網關是一個更為智能的應用服務器,它的定義類似于面向對象設計模式中的Facade模式,它的存在就像是整個微服務架構系統的門面一樣,所有的外部客戶端訪問都需要經過它來進行調度和過濾。它除了要實現請求路由、 負載均衡、 校驗過濾等功能之外,還需要更多能力,比如與服務治理框架的結合、請求轉發時的熔斷機制、服務的聚合等一系列高級功能。

在SpringCloud全家桶中,API網關有Zuul和gateway兩種實現。 1. zuul進來逐漸被gateway取代。 2. zuul可以整合進任何SpringBoot應用 3. gateway基于異步非阻塞模型,使用的netty+webflux實現,不能加入web依賴,默認加載加入webflux依賴。 4. Spring Cloud zuul使用的仍是zuul 1.x,zuul 2.x也是異步非阻塞的。 4. 選用zuul還是gateway,要看使用場景,如果在已有的非WebFlux項目使用,要用zuul。單純的API網關獨立部署,建議gateway。

代碼可以在SpringBoot組件化構建https://www.pomit.cn/java/spring/springcloud.html中的EurekaGateway、ZkGateway和ConsulGateway組件中查看,并下載。分別對應三種不同的服務注冊方式。

首發地址: 品茗IT-同步發布

如果大家正在尋找一個java的學習環境,或者在開發中遇到困難,可以加入我們的java學習圈,點擊即可加入,共同學習,節約學習時間,減少很多在學習中遇到的難題。

二、項目配置

本篇的配置基于服務注冊發現的項目基礎上,并選擇Consul + Gateway為例講解如何使用zuul做API網關。至于(Eureka + Gateway)和 (zookeeper + Gateway)寫法上和(consul + Gateway)是一樣的,不再分開章節描述。

這里選擇Consul + Gateway為例,是因為它需要一個額外的健康檢查接口,其他無區別。

可以參考我前面的文章做對比:

《SpringCloud技術指南系列(五)服務注冊發現之Consul服務調用》

《SpringCloud技術指南系列(三)服務注冊發現之Eureka服務調用》

《SpringCloud技術指南系列(七)服務注冊發現之Zookeeper服務調用》

2.1 引入依賴

需要在建立好的項目中引入spring-cloud-starter-gateway,不能引入spring-boot-starter-web,因為它用的是webflux。

如果需要使用hystrix,要顯式引入spring-cloud-starter-netflix-hystrix。

本篇是在consul的服務發現基礎上進行gateway的配置,因此還需要引入consul相關配置。

依賴如下:

<?xml version="1.0"?>

父模塊pom文件可以在https://www.pomit.cn/spring/SpringCloudWork/pom.xml獲取。

2.2 配置文件

這里使用yaml文件寫配置,配置文件application.yml:

application.yml:

server:port: 8819 spring:application:name: consulGatewaycloud:consul:host: 127.0.0.1port: 8500discovery:prefer-ip-address: truehealthCheckPath: /consul/healthgateway:discovery:locator:enabled: truelowerCaseServiceId: trueroutes:- id: myRouteuri: lb://consulFeignpredicates:- Path=/test/**filters:- StripPrefix=1- name: Hystrixargs:name: fallbackcmdfallbackUri: forward:/incaseoffailureusethiss- id: myOutsideRouteuri: https://cn.bing.com/predicates:- Path=/search/**filters:- StripPrefix=1

這里,表示API網關在8819端口監聽,名字是consulGateway。

  • spring.cloud.consul開頭的配置時consul服務注冊發現的配置。前面章節已經有說明。
  • spring.cloud.gateway.discovery.locator.enabled開啟路由轉發功能
  • spring.cloud.gateway.discovery.locator.lowerCaseServiceId是指注冊到cunsul的服務使用小寫。
  • spring.cloud.gateway.routes.*:配置路由轉發。id是唯一的,uri如果使用lb:開頭,表示使用注冊的服務進行負載均衡。predicates.Path:表示請求的路徑。filters.StripPrefix表示轉發時路徑去掉幾層前綴。filters.name如果是Hystrix,表示使用Hystrix進行熔斷降級,需要配置fallbackUri進行降低轉發。

三、服務不可用降級接口

如果配置了hystrix做熔斷。當請求次數失敗次數過多(我測試第一次是8次,第二次變7次了),將不再請求,直接請求/incaseoffailureusethiss降級。

如圖所示,1.01s是請求失敗的過程,7次之后,就直接熔斷,所以響應時間小于10ms了。

FallbackController:

package

四、啟動

啟動類無需做額外的配置,這里只有一個服務注冊的注解@EnableDiscoveryClient。

ConsulGatewayApplication :

package

五、其他web

我們仍可以寫自己的web服務,和Gateway的轉發互不影響,但是路徑別重復了。 ConsulGatewayRest :

package

六、Consul的健康檢測

這個是使用consul做注冊中心才需要的。

HealthWeb:

package

七、使用到的實體

ResultModel:

詳細完整的實體,可以訪問品茗IT-博客《SpringCloud技術指南系列(十二)API網關之Gateway使用》進行查看

品茗IT-博客專題:https://www.pomit.cn/lecture.html匯總了Spring專題、Springboot專題、SpringCloud專題、web基礎配置專題。

快速構建項目

Spring項目快速開發工具:

一鍵快速構建Spring項目工具

一鍵快速構建SpringBoot項目工具

一鍵快速構建SpringCloud項目工具

一站式Springboot項目生成

Mysql一鍵生成Mybatis注解Mapper

Spring組件化構建

SpringBoot組件化構建

SpringCloud服務化構建

喜歡這篇文章么,喜歡就加入我們一起討論SpringBoot使用吧!

總結

以上是生活随笔為你收集整理的gateway网关_SpringCloud技术指南系列(十二)API网关之Gateway使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。