国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由

這篇具有很好參考價值的文章主要介紹了spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、gateway相關介紹

在微服務架構中,系統(tǒng)往往由多個微服務組成,而這些服務可能部署在不同機房、不同地區(qū)、不同域名下。這種情況下,客戶端(例如瀏覽器、手機、軟件工具等)想要直接請求這些服務,就需要知道它們具體的地址信息,例如 IP 地址、端口號等。這種客戶端直接請求服務的方式存在很多的復雜問題。如:需要維護大量的服務地址、存在跨域請求的問題、每個微服務需要獨立認證等。所以我們可以通過?API 網(wǎng)關(gateway)來解決這些問題。所有客戶端請求都發(fā)生到網(wǎng)關,由網(wǎng)關統(tǒng)一轉發(fā)到不同的地址。網(wǎng)關還可以?處理一些非業(yè)務功能的邏輯,例如權限驗證、監(jiān)控、緩存等。本篇主要講解通過網(wǎng)關統(tǒng)一請求轉發(fā)到不同微服務。

2、創(chuàng)建網(wǎng)關服務

首先創(chuàng)建maven項目新建網(wǎng)關模塊:

spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由

pom導入網(wǎng)關相關依賴:

 <dependencies>
        <!--Eureka Client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--特別注意:在 gateway 網(wǎng)關服務中不能引入 spring-boot-starter-web 的依賴,否則會報錯-->
        <!-- Spring cloud gateway 網(wǎng)關依賴-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <!-- LoadBalancer -->
<!-- 引入spring-cloud-loadbalancer -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!--ribbon Spring Cloud Ribbon 在高版本移除了 -->
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>-->
<!-- <version>2.2.5.RELEASE</version>-->
<!-- </dependency>-->
    </dependencies>

創(chuàng)建springboot啟動類:

@SpringBootApplication
@EnableEurekaClient
public class GateWayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GateWayApplication.class,args);
    }

}

啟動類創(chuàng)建成功后,在resources資源目錄下創(chuàng)建application.yml文件,用來配置gateway。首先設置服務端口和服務名稱:

server:
  port: 8081
spring:
  application:
    name: gateway-server-one

在把網(wǎng)關注冊到注冊中心:

#客戶端注冊
eureka:
  instance:
    instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port} #localhost
    hostname: localhost
  client:
    register-with-eureka: true #是否向注冊中心注冊自己 默認為true
    fetch-registry: true  #是否需要檢索服務  默認為true
    service-url:
      defaultZone: http://eternity:1234qwer@localhost:4405/eureka/

配置好之后,可以啟動網(wǎng)關。查看網(wǎng)關服務是否可以正常啟動以及是否在注冊中心注冊成功,如果注冊成功然后在開始配置網(wǎng)關參數(shù)。

spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由

可以看到服務啟動成功,我們看看注冊中心是否成功:

spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由

eureka中心已經(jīng)有了,說明啟動成功。

3、配置gateway路由

spring:
  application:
    name: gateway-server-one
  cloud:
    loadbalancer:
      ribbon:
        enabled: false #使用LoadBalancer, Ribbon 在高版本移除了 切換到ReactiveLoadBalancerClientFilter
    gateway:
      discovery: 
        locator: #路由訪問方式:http://Gateway_HOST:Gateway_PORT/大寫的serviceId/**,其中微服務應用名默認大寫訪問。
          enabled: true #開啟通過名稱找到服務器功能
          lower-case-service-id: true #使用小寫service-id
      routes:
        - id: hibernate-server-one-route #路由的ID,沒有固定規(guī)則,但要求唯一,建議與服務名對應
          uri: http://localhost:8800  #匹配后提供服務的路由地址
          predicates:
            #以下是斷言條件,必選全部符合條件
            - Path=/admin/user/**   #斷言,路徑相匹配的進行路由
            - Method=GET #只能時 GET 請求時,才能訪問
        - id: xxl-job-server-one-route
#          uri: http://localhost:8801 #可以設置為服務名
          uri: lb://XXL-JOB-SERVER-MODEL #可以設置為服務名
          predicates:
            - Path=/admin/user/**   #斷言,路徑相匹配的進行路由, 注意:Path 中 P 為大寫
            - After=2022-06-06T03:29:37.318-07:00 # [Asia/Shanghai] # after來進行設置,后面添加一個時間,就是指在什么時間之后這個服務才可以被訪問,否則將無法被訪問到
#            - After=2030-01-20T17:42:47.789-07:00 # [America/Denver]

配置成功后再次啟動網(wǎng)關,查看服務器是否轉發(fā)成功。

通過網(wǎng)關gateway請求路徑訪問查找用戶信息:

http://localhost:8081/admin/user/

spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由

通過postman測試接口,查詢成功。

4、gateway負載均衡

通過在配置文件中配置路徑的uri為注冊中心服務器名稱,可以實現(xiàn)gateway負載均衡。訪問時通過服務名稱去查找服務名下面的多個實例,根據(jù)配置的策略實現(xiàn)轉發(fā)到不同實例服務。

 uri: lb://XXL-JOB-SERVER-MODEL #可以設置為服務名

在通過服務名稱轉發(fā)的過程中,有可能轉發(fā)失敗。報找不到服務,接口報錯:

spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由

查看網(wǎng)關控制臺發(fā)現(xiàn)也報錯:

java.net.UnknownHostException: failed to resolve 'xxl-job-server-model' after 4 queries 
    at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1013) ~[netty-resolver-dns-4.1.58.Final.jar:4.1.58.Final]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
    |_ checkpoint ? org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
    |_ checkpoint ? HTTP POST "/admin/user/" [ExceptionHandlingWebHandler]
Stack trace:
        at io.netty.resolver.dns.DnsResolveContext.finishResolve(DnsResolveContext.java:1013) ~[netty-resolver-dns-4.1.58.Final.jar:4.1.58.Final]
        at io.netty.resolver.dns.DnsResolveContext.tryToFinishResolve(DnsResolveContext.java:966) ~[netty-resolver-dns-4.1.58.Final.jar:4.1.58.Final]
        at io.netty.resolver.dns.DnsResolveContext.query(DnsResolveContext.java:414) ~[netty-resolver-dns-4.1.58.Final.jar:4.1.58.Final]

沒有找到服務名,剛開始以為是設置路由的服務名和注冊中心的服務名不一致。經(jīng)過查找發(fā)現(xiàn)是一致。最后查找發(fā)現(xiàn)是客戶端微服務注冊到注冊中心的hostname配置錯誤,需要配置和注冊中心一致的hostname。不然網(wǎng)關通過服務名找不到相關地址:

spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由

查看eureka服務注冊地址:

spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由

所以需要配置客戶端hostname:

hostname: localhost

再次重新運行系統(tǒng),發(fā)現(xiàn)報錯問題已經(jīng)解決。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-474499.html

到了這里,關于spring cloud gateway網(wǎng)關(一)之網(wǎng)關路由的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 第八章 : Spring cloud 網(wǎng)關中心 Gateway (動態(tài)路由)

    第八章 : Spring cloud 網(wǎng)關中心 Gateway (動態(tài)路由) 前言 本章知識點:重點介紹動態(tài)網(wǎng)關路由的背景、動態(tài)路由與靜態(tài)路由的概念,以及如何基于Nacos實現(xiàn)動態(tài)網(wǎng)關路由 的實戰(zhàn)案例。 背景 前面章節(jié)介紹了Spring Cloud Gateway提供的配置路由規(guī)則的兩種方法,但都是在Spring Cloud Ga

    2024年01月19日
    瀏覽(36)
  • 第七章 : Spring cloud 網(wǎng)關中心 Gateway (靜態(tài)路由)

    第七章 : Spring cloud 網(wǎng)關中心 Gateway (靜態(tài)路由) 前言 本章知識點:本章將會介紹什么是Spring Cloud Gateway、為什么會出現(xiàn)Spring Cloud Gateway,以及Spring Cloud Gateway的工作原理和實戰(zhàn)用法,以及Spring Cloud Gateway 路由概念以及基于nacos注冊中心Spring Cloud Gateway 靜態(tài)路由的實戰(zhàn)。 什么

    2024年02月02日
    瀏覽(38)
  • Spring Cloud Gateway 服務網(wǎng)關的部署與使用詳細介紹

    Spring Cloud Gateway 服務網(wǎng)關的部署與使用詳細介紹

    1、什么是服務網(wǎng)關: ????????傳統(tǒng)的單體架構中只需要開放一個服務給客戶端調(diào)用,但是微服務架構中是將一個系統(tǒng)拆分成多個微服務,如果沒有網(wǎng)關,客戶端只能在本地記錄每個微服務的調(diào)用地址,當需要調(diào)用的微服務數(shù)量很多時,它需要了解每個服務的接口,這個工

    2024年02月02日
    瀏覽(27)
  • SpringCloud - Spring Cloud 之 Gateway網(wǎng)關,Route路由,Predicate 謂詞/斷言,F(xiàn)ilter 過濾器(十三)

    SpringCloud - Spring Cloud 之 Gateway網(wǎng)關,Route路由,Predicate 謂詞/斷言,F(xiàn)ilter 過濾器(十三)

    閱讀本文前可先參考 ??????SpringCloud - Spring Cloud根/父項目,開發(fā)準備(二)_MinggeQingchun的博客-CSDN博客 SpringCloud - Spring Cloud 之 Gateway網(wǎng)關(十三)_MinggeQingchun的博客-CSDN博客 Web 有三大組件(監(jiān)聽器 過濾器 servlet),Spring Cloud GateWay 最主要的功能就是路由轉發(fā),而在定義

    2024年02月14日
    瀏覽(29)
  • 【Spring Cloud 八】Spring Cloud Gateway網(wǎng)關

    【Spring Cloud 八】Spring Cloud Gateway網(wǎng)關

    【Spring Cloud一】微服務基本知識 【Spring Cloud 三】Eureka服務注冊與服務發(fā)現(xiàn) 【Spring Cloud 四】Ribbon負載均衡 【Spring Cloud 五】OpenFeign服務調(diào)用 【Spring Cloud 六】Hystrix熔斷 【Spring Cloud 七】Sleuth+Zipkin 鏈路追蹤 在項目中是使用了Gateway做統(tǒng)一的請求的入口,以及統(tǒng)一的跨域處理以及

    2024年02月12日
    瀏覽(28)
  • Spring Cloud 之 Gateway 網(wǎng)關

    Spring Cloud 之 Gateway 網(wǎng)關

    ?? 簡介:java系列技術分享(??持續(xù)更新中…??) ?? 初衷:一起學習、一起進步、堅持不懈 ?? 如果文章內(nèi)容有誤與您的想法不一致,歡迎大家在評論區(qū)指正?? ?? 希望這篇文章對你有所幫助,歡迎點贊 ?? 收藏 ?留言 ?? ?? 更多文章請點擊 Gateway官網(wǎng) :https://spring.io/projects/

    2024年02月16日
    瀏覽(21)
  • Spring cloud教程Gateway服務網(wǎng)關

    Spring cloud教程Gateway服務網(wǎng)關

    寫在前面的話: 本筆記在參考網(wǎng)上視頻以及博客的基礎上,只做個人學習筆記,如有侵權,請聯(lián)系刪除,謝謝! Spring Cloud Gateway 是 Spring Cloud 的一個全新項目,該項目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等響應式編程和事件流技術開發(fā)的網(wǎng)關,它旨在為微服務架構提

    2024年02月08日
    瀏覽(31)
  • Spring Cloud之API網(wǎng)關(Gateway)

    Spring Cloud之API網(wǎng)關(Gateway)

    目錄 API網(wǎng)關 好處 解決方案 Gateway 簡介 特征 核心概念 Route(路由) Predicate(斷言) Filter(過濾器) 工作流程 Route(路由) 路由配置方式 1.yml配置文件路由 2.bean進行配置 3.動態(tài)路由 動態(tài)路由 Predicate(斷言) 特點 常見斷言 示例 Filter(過濾器) filter分類 Pre 類型 Post 類型 網(wǎng)關過濾器 格式

    2024年02月08日
    瀏覽(31)
  • spring cloud gateway網(wǎng)關和鏈路監(jiān)控

    spring cloud gateway網(wǎng)關和鏈路監(jiān)控

    文章目錄 目錄 文章目錄 前言 一、網(wǎng)關 1.1 gateway介紹 1.2 如何使用gateway? 1.3 網(wǎng)關優(yōu)化 1.4自定義斷言和過濾器 1.4.1 自定義斷言 二、Sleuth--鏈路追蹤 2.1 鏈路追蹤介紹 2.2 Sleuth介紹 2.3 使用 2.4?Zipkin的集成 ?2.5 使用可視化zipkin來監(jiān)控微服務 總結 所謂的API網(wǎng)關,就是指系統(tǒng)的 統(tǒng)

    2024年02月02日
    瀏覽(29)
  • Spring Cloud第二季--服務網(wǎng)關Gateway

    Spring Cloud第二季--服務網(wǎng)關Gateway

    Spring Cloud Gateway是在Spring生態(tài)系統(tǒng)之上構建的API網(wǎng)關服務,基于Spring 5,Spring Boot 2和 Project Reactor等技術。 Gateway 使用的Webflux中的reactor-netty響應式編程組件,底層使用了 Netty 通訊框架。Spring Cloud Gateway能干嘛呢? Gateway是原zuul1.x版的替代。 Spring Cloud Gateway 與 Zuul的區(qū)別: Zuu

    2024年02月03日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包