最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Cloud Gateway 服務網關快速實現(xiàn)解析

 更新時間:2019年08月24日 09:40:37   作者:云天  
這篇文章主要介紹了Spring Cloud Gateway 服務網關快速實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Spring Cloud Gateway 服務網關

API 主流網關有NGINX、ZUUL、Spring Cloud Gateway、Linkerd等;Spring Cloud Gateway構建于 Spring 5+,基于 Spring Boot 2.x 響應式的、非阻塞式的 API。同時,它支持 websockets,和 Spring 框架緊密集成,用來代替服務網關Zuul,開發(fā)體驗相對來說十分不錯。

Spring Cloud Gateway 是 Spring Cloud 微服務平臺的一個子項目,屬于 Spring 開源社區(qū),依賴名叫:spring-cloud-starter-gateway。

Zuul 是 Netflix 公司的開源項目,Spring Cloud 在 Netflix 項目中也已經集成了 Zuul,依賴名叫:spring-cloud-starter-netflix-zuul。

API 網關

API 網關出現(xiàn)的原因是微服務架構的出現(xiàn),不同的微服務一般會有不同的網絡地址,而外部客戶端可能需要調用多個服務的接口才能完成一個業(yè)務需求,如果讓客戶端直接與各個微服務通信,會有以下的問題:

  • 客戶端會多次請求不同的微服務,增加了客戶端的復雜性。
  • 存在跨域請求,在一定場景下處理相對復雜。
  • 認證復雜,每個服務都需要獨立認證。
  • 難以重構,隨著項目的迭代,可能需要重新劃分微服務。例如,可能將多個服務合并成一個或者將一個服務拆分成多個。如果客戶端直接與微服務通信,那么重構將會很難實施。
  • 某些微服務可能使用了防火墻 / 瀏覽器不友好的協(xié)議,直接訪問會有一定的困難。

以上這些問題可以借助 API 網關解決。API 網關是介于客戶端和服務器端之間的中間層,所有的外部請求都會先經過 API 網關這一層。也就是說,API 的實現(xiàn)方面更多的考慮業(yè)務邏輯,而安全、性能、監(jiān)控可以交由 API 網關來做,這樣既提高業(yè)務靈活性又不缺安全性。

使用 API 網關后的優(yōu)點如下:

  • 易于監(jiān)控??梢栽诰W關收集監(jiān)控數據并將其推送到外部系統(tǒng)進行分析。
  • 易于認證??梢栽诰W關上進行認證,然后再將請求轉發(fā)到后端的微服務,而無須在每個微服務中進行認證。
  • 減少了客戶端與各個微服務之間的交互次數。

Spring Cloud Gateway的特征

  • Java 8
  • Spring Framework 5
  • Spring Boot 2
  • 動態(tài)路由
  • 內置到Spring Handler映射中的路由匹配
  • 基于HTTP請求的路由匹配 (Path, Method, Header, Host, etc…​)
  • 過濾器作用于匹配的路由
  • 過濾器可以修改下游HTTP請求和HTTP響應 (Add/Remove Headers, Add/Remove Parameters, Rewrite Path, Set Path, Hystrix, etc…​)
  • 通過API或配置驅動
  • 支持Spring Cloud DiscoveryClient配置路由,與服務發(fā)現(xiàn)與注冊配合使用

快速上手

Spring Cloud Gateway 示例源碼

Spring Cloud Gateway 網關路由有兩種配置方式:

在配置文件 yml 中配置

通過@Bean自定義 RouteLocator,在啟動主類 Application 中配置
這兩種方式是等價的,建議使用 yml 方式進配置。

1.pom.xml Maven依賴

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.7.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Greenwich.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <!--Spring Cloud Gateway 是使用 netty+webflux 實現(xiàn)因此不需要再引入 web 模塊-->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

2.application.yml配置

server:
 port: 8080
spring:
 cloud:
  gateway:
   routes:
    - id: easy_route # 我們自定義的路由 ID,保持唯一
     uri: https://github.com # 目標服務地址
     predicates: # 路由條件,Predicate 接受一個輸入參數,返回一個布爾值結果。該接口包含多種默認方法來將
      - Path=/smltq/spring-boot-demo

上面這段配置的意思是,配置了一個 id 為 easy_route 的路由規(guī)則,當訪問地址 http://localhost:8080/smltq/spring-boot-demo時會自動轉發(fā)到地址:https://github.com/smltq/spring-boot-demo 。

3.配置完成啟動項目

在瀏覽器訪問進行測試,當我們訪問 http://localhost:8080/smltq/spring-boot-demo 時會展示如下頁面:

資料

Spring Cloud Gateway 示例源碼

更多路由分發(fā)功能參考官網

Spring Boot、Spring Cloud示例學習

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • java編寫的簡單移動方塊小游戲代碼

    java編寫的簡單移動方塊小游戲代碼

    這篇文章主要介紹了java編寫的簡單移動方塊小游戲代碼,涉及Java簡單圖形繪制與事件響應的相關技巧,需要的朋友可以參考下
    2015-12-12
  • 詳解SpringCloud-OpenFeign組件的使用

    詳解SpringCloud-OpenFeign組件的使用

    這篇文章主要介紹了SpringCloud-OpenFeign組件的使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 解決spring mvc 多數據源切換,不支持事務控制的問題

    解決spring mvc 多數據源切換,不支持事務控制的問題

    下面小編就為大家?guī)硪黄鉀Qspring mvc 多數據源切換,不支持事務控制的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • SpringBoot項目的測試類實例解析

    SpringBoot項目的測試類實例解析

    這篇文章主要介紹了SpringBoot項目的測試類實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 基于java springboot + mybatis實現(xiàn)電影售票管理系統(tǒng)

    基于java springboot + mybatis實現(xiàn)電影售票管理系統(tǒng)

    這篇文章主要介紹了基于java springboot + mybatis實現(xiàn)的完整電影售票管理系統(tǒng)基于java springboot + mybatis,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Java多線程 兩階段終止模式Two-Phase Termination Patter

    Java多線程 兩階段終止模式Two-Phase Termination Patter

    這篇文章主要介紹了Java多線程 兩階段終止模式Two-Phase Termination Patter,該模式有兩個角色,分別是Terminator,終止者,負責接收終止請求,執(zhí)行終止處理,處理完成后再終止自己。TerminationRequester終止請求發(fā)出者,用來向Terminator發(fā)出終止請求,需要的朋友可以參考一下
    2021-10-10
  • Java實現(xiàn)批量修改txt文件名稱的方法示例

    Java實現(xiàn)批量修改txt文件名稱的方法示例

    這篇文章主要介紹了Java實現(xiàn)批量修改txt文件名稱的方法,結合實例形式分析了Java針對目錄文件遍歷及文件讀寫、屬性操作等相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03
  • java中雪花算法時鐘回撥問題解決

    java中雪花算法時鐘回撥問題解決

    本文介紹了分布式系統(tǒng)中使用雪花算法生成唯一ID時可能遇到的時鐘回撥問題,以及解決這個問題的幾種方法,包括等待機制、擴展位、預留時間戳或邏輯時鐘等,感興趣的可以了解一下
    2024-10-10
  • Java基于裝飾者模式實現(xiàn)的染色饅頭案例詳解

    Java基于裝飾者模式實現(xiàn)的染色饅頭案例詳解

    這篇文章主要介紹了Java基于裝飾者模式實現(xiàn)的染色饅頭案例,簡單描述了裝飾者模式的概念、原理及Java使用裝飾者模式的相關實現(xiàn)步驟、操作技巧與注意事項,需要的朋友可以參考下
    2018-05-05
  • lombok注解@Data使用在繼承類上時出現(xiàn)警告的問題及解決

    lombok注解@Data使用在繼承類上時出現(xiàn)警告的問題及解決

    Lombok的@Data注解簡化了實體類代碼,但在子類中使用時會出現(xiàn)警告,指出equals和hashCode方法不會考慮父類屬性,解決方法有兩種:一是在父類上使用@EqualsAndHashCode(callSuper=true)注解;二是通過配置lombok.config文件,均能有效解決警告問題
    2024-10-10

最新評論

庐江县| 台北市| 临海市| 昌都县| 通山县| 青冈县| 巫溪县| 杭锦后旗| 凌海市| 浠水县| 五家渠市| 峡江县| 禄丰县| 白水县| 延川县| 子长县| 武胜县| 甘孜| 桐庐县| 通州市| 营口市| 湟中县| 诸暨市| 青州市| 中阳县| 阿图什市| 碌曲县| 浑源县| 贵德县| 河源市| 常宁市| 北海市| 封开县| 焦作市| 县级市| 昭平县| 大洼县| 象州县| 阿尔山市| 纳雍县| 雷山县|