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

Spring Cloud Gateway 服務(wù)網(wǎng)關(guān)快速實(shí)現(xiàn)解析

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

Spring Cloud Gateway 服務(wù)網(wǎng)關(guān)

API 主流網(wǎng)關(guān)有NGINX、ZUUL、Spring Cloud Gateway、Linkerd等;Spring Cloud Gateway構(gòu)建于 Spring 5+,基于 Spring Boot 2.x 響應(yīng)式的、非阻塞式的 API。同時(shí),它支持 websockets,和 Spring 框架緊密集成,用來(lái)代替服務(wù)網(wǎng)關(guān)Zuul,開發(fā)體驗(yàn)相對(duì)來(lái)說(shuō)十分不錯(cuò)。

Spring Cloud Gateway 是 Spring Cloud 微服務(wù)平臺(tái)的一個(gè)子項(xiàng)目,屬于 Spring 開源社區(qū),依賴名叫:spring-cloud-starter-gateway。

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

API 網(wǎng)關(guān)

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

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

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

使用 API 網(wǎng)關(guān)后的優(yōu)點(diǎn)如下:

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

Spring Cloud Gateway的特征

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

快速上手

Spring Cloud Gateway 示例源碼

Spring Cloud Gateway 網(wǎng)關(guān)路由有兩種配置方式:

在配置文件 yml 中配置

通過(guò)@Bean自定義 RouteLocator,在啟動(dòng)主類 Application 中配置
這兩種方式是等價(jià)的,建議使用 yml 方式進(jìn)配置。

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 實(shí)現(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 # 目標(biāo)服務(wù)地址
     predicates: # 路由條件,Predicate 接受一個(gè)輸入?yún)?shù),返回一個(gè)布爾值結(jié)果。該接口包含多種默認(rèn)方法來(lái)將
      - Path=/smltq/spring-boot-demo

上面這段配置的意思是,配置了一個(gè) id 為 easy_route 的路由規(guī)則,當(dāng)訪問(wèn)地址 http://localhost:8080/smltq/spring-boot-demo時(shí)會(huì)自動(dòng)轉(zhuǎn)發(fā)到地址:https://github.com/smltq/spring-boot-demo

3.配置完成啟動(dòng)項(xiàng)目

在瀏覽器訪問(wèn)進(jìn)行測(cè)試,當(dāng)我們?cè)L問(wèn) http://localhost:8080/smltq/spring-boot-demo 時(shí)會(huì)展示如下頁(yè)面:

資料

Spring Cloud Gateway 示例源碼

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

Spring Boot、Spring Cloud示例學(xué)習(xí)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java編寫的簡(jiǎn)單移動(dòng)方塊小游戲代碼

    java編寫的簡(jiǎn)單移動(dòng)方塊小游戲代碼

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

    詳解SpringCloud-OpenFeign組件的使用

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

    解決spring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問(wèn)題

    下面小編就為大家?guī)?lái)一篇解決spring mvc 多數(shù)據(jù)源切換,不支持事務(wù)控制的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • SpringBoot項(xiàng)目的測(cè)試類實(shí)例解析

    SpringBoot項(xiàng)目的測(cè)試類實(shí)例解析

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

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

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

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

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

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

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

    java中雪花算法時(shí)鐘回?fù)軉?wèn)題解決

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

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

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

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

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

最新評(píng)論

塔河县| 扎鲁特旗| 安阳县| 和硕县| 徐州市| 宝兴县| 梁河县| 万全县| 元朗区| 岳普湖县| 和硕县| 万源市| 遵义县| 思茅市| 昌吉市| 嘉鱼县| 石狮市| 崇文区| 永和县| 屏东市| 邻水| 龙江县| 中江县| 东至县| 且末县| 长宁区| 若尔盖县| 连江县| 阜康市| 济宁市| 内黄县| 瓮安县| 昆山市| 贺州市| 方山县| 邛崃市| 紫阳县| 高邮市| 凭祥市| 右玉县| 兴城市|