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

spring cloud搭建(zuul)

這篇具有很好參考價(jià)值的文章主要介紹了spring cloud搭建(zuul)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

天行健,君子以自強(qiáng)不息;地勢(shì)坤,君子以厚德載物。


每個(gè)人都有惰性,但不斷學(xué)習(xí)是好好生活的根本,共勉!


文章均為學(xué)習(xí)整理筆記,分享記錄為主,如有錯(cuò)誤請(qǐng)指正,共同學(xué)習(xí)進(jìn)步。


spring cloud 相關(guān)組件搭建(建議順序):

  • eureka(注冊(cè)中心服務(wù))spring cloud搭建(eureka)
  • P-C service(服務(wù)提供者和服務(wù)調(diào)用者)spring cloud搭建(P-C service)
  • feign(接口調(diào)用)spring cloud搭建(feign)
  • hystrix(熔斷器)spring cloud搭建(hystrix)
  • zuul(網(wǎng)關(guān)服務(wù))本篇

本篇基于前兩篇


一、zuul網(wǎng)關(guān)簡(jiǎn)介

Zuul是一個(gè)路由網(wǎng)關(guān)(GateWay)
有兩個(gè)作用:

  • 路由:將外部請(qǐng)求轉(zhuǎn)發(fā)到指定的微服務(wù)實(shí)例上,實(shí)現(xiàn)外部訪問統(tǒng)一入口
  • 過濾:對(duì)外部請(qǐng)求的處理過程進(jìn)行控制,實(shí)現(xiàn)請(qǐng)求校驗(yàn)、服務(wù)聚合等功能

應(yīng)用:
將zuul作為一個(gè)服務(wù)注冊(cè)到eureka中,同時(shí)從eureka中獲取其他服務(wù)信息,對(duì)微服務(wù)的訪問都通過zuul進(jìn)行跳轉(zhuǎn),即可實(shí)現(xiàn)所有服務(wù)請(qǐng)求統(tǒng)一入口管理,也可進(jìn)行請(qǐng)求校驗(yàn)等操作。


二、開發(fā)環(huán)境:

JDK版本:1.8
maven版本:3.9.0
開發(fā)工具:IDEA社區(qū)版ideaIC-2018.3
項(xiàng)目框架:spring boot 版本為 2.2.4.RELEASE springboot搭建傳送門spring cloud 版本為Hoxton.SR12
為什么選擇這兩個(gè)版本,因?yàn)槭褂脄uul時(shí),用其他版本都報(bào)錯(cuò),目前只知道兩個(gè)版本一起用沒問題

以下均基于父項(xiàng)目和eureka子項(xiàng)目創(chuàng)建后的操作

父項(xiàng)目和eureka的配置請(qǐng)參考:spring cloud搭建(eureka)

三、包結(jié)構(gòu)預(yù)覽

最后創(chuàng)建好的服務(wù)及包結(jié)構(gòu)如下
spring cloud搭建(zuul)
spring cloud搭建(zuul)

四、創(chuàng)建接口

在service1和service2中創(chuàng)建簡(jiǎn)單的請(qǐng)求接口
注:這兩個(gè)服務(wù)只需要開啟eureka注冊(cè)服務(wù)即可,zuul會(huì)到注冊(cè)中心獲取兩個(gè)服務(wù)的信息

1. service1的請(qǐng)求控制類Service1ZuulController

Service1ZuulController.java

package com.service1.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassDescription: service1服務(wù)zuul調(diào)用的測(cè)試請(qǐng)求
 * @Author:李白
 * @Date:2023/6/2 14:06
 */
@RestController
@RequestMapping("/service1-pre")
public class Service1ZuulController {
    @RequestMapping("/service1/zuul/test1/11")
    public String service2Test1(){
        return "service1-zuul-test1-11";
    }
    @RequestMapping("/service1/zuul/test2/22")
    public String service2Test2(){
        return "service1-zuul-test2-22";
    }
}

2. service1的請(qǐng)求控制類Service2ZuulController

package com.service2.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @ClassDescription: service2服務(wù)zuul調(diào)用的測(cè)試請(qǐng)求
 * @Author:李白
 * @Date:2023/6/2 14:11
 */
@RestController
@RequestMapping("/service2-pre")
public class Service2ZuulController {
    @RequestMapping("/service2/zuul/test1/11")
    public String service2Test1(){
        return "service2-zuul-test1-11";
    }
    @RequestMapping("/service2/zuul/test2/22")
    public String service2Test2(){
        return "service2-zuul-test2-22";
    }
}

五、創(chuàng)建子項(xiàng)目zuul

1. 創(chuàng)建zuul服務(wù)

此處省略,可參考本片目錄下方spring cloud搭建流程中的第一篇

2. 配置zuul的依賴

在zuul的pom.xml中配置zuul網(wǎng)關(guān)需要的依賴
注:在zuul服務(wù)的pom中配置zuul的相關(guān)依賴時(shí),如果使用的其他版本出現(xiàn)依賴報(bào)錯(cuò),將父項(xiàng)目pom的相關(guān)依賴版本控制做一下修改,親測(cè)可用:
將spring boot的版本換為2.2.4.RELEASE將spring cloud的版本換為Hoxton.SR12
zuul服務(wù)的完整pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>spring_cloud_demo</artifactId>
        <groupId>com.cloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring_cloud_zuul</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!--spring cloud eureka client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--spring cloud zuul-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
            <version>2.2.10.RELEASE</version>
        </dependency>
    </dependencies>

</project>

因?yàn)閦uul依賴中包含spring-boot-starter-web所以可省略spring boot啟動(dòng)依賴的引入
spring cloud搭建(zuul)

3. zuul的yml文件配置

application.yml

server:
  port: 8004

spring:
  #服務(wù)相關(guān)信息
  application:
    #服務(wù)名稱 會(huì)出現(xiàn)在注冊(cè)中心
    name: Zuul-app

#注冊(cè)中心
eureka:
  client:
    #默認(rèn)開啟 是否將本服務(wù)注冊(cè)到注冊(cè)中心
#    register-with-eureka: ture
    #默認(rèn)開啟 是否獲取注冊(cè)中心服務(wù)信息
#    fetch-registry: true
    #注冊(cè)中心服務(wù)地址
    service-url:
      #默認(rèn)地址
      defaultZone: http://localhost:8001/eureka/
  #服務(wù)實(shí)例相關(guān)
  instance:
    #點(diǎn)擊具體的微服務(wù),右下角是否顯示ip
    prefer-ip-address: true
    #顯示微服務(wù)的名稱(在注冊(cè)中心的別名)
    instance-id: zuul-8004


#服務(wù)網(wǎng)關(guān)(路由)
zuul:
  #請(qǐng)求前綴
#  prefix: /service2-pre
  #配置路由表
  routes:
    #配置所需路由的服務(wù)信息,配置多個(gè)服務(wù)信息時(shí)默認(rèn)最后一個(gè)有效,其余不可用
    #對(duì)每個(gè)服務(wù)都可以指定一個(gè)唯一key,該值可以任意指定
    service1-app:
      #將以/user-service/開頭的請(qǐng)求映射到service1-app這個(gè)服務(wù)上
      #被路由的服務(wù)請(qǐng)求路徑
#      path: /service1-pre/**
      path: /**
      #路由接收的服務(wù)實(shí)例名稱,依賴于eureka,通過實(shí)例名來在eureka中獲取服務(wù)地址及端口,再進(jìn)行路由拼接訪問
      serviceId: Service1-app
      #如果不用實(shí)例名也可以用服務(wù)的具體url,使用url時(shí)是不依賴于eureka的,會(huì)根據(jù)url拼接路徑訪問跳轉(zhuǎn)
#      url: http://localhost:8002/
    #對(duì)每個(gè)服務(wù)都可以指定一個(gè)唯一key,該值可以任意指定
    service2-app:
      #將以/user-service/開頭的請(qǐng)求映射到service1-app這個(gè)服務(wù)上
      #被路由的服務(wù)請(qǐng)求路徑
#      path: /service2-pre/**
      path: /**
      #路由接收的服務(wù)實(shí)例名稱,依賴于eureka,通過實(shí)例名來在eureka中獲取服務(wù)地址及端口,再進(jìn)行路由拼接訪問
      serviceId: Service2-app
      #如果不用實(shí)例名也可以用服務(wù)的具體url,使用url時(shí)是不依賴于eureka的,會(huì)根據(jù)url拼接路徑訪問跳轉(zhuǎn)
#      url: http://localhost:8003/



#ribbon:
  #負(fù)載均衡時(shí)是否開啟eureka
#  eureka:
#    enable: false
  # 添加ribbon的超時(shí)時(shí)間設(shè)置
#  ReadTimeout: 3000
#  ConnectTimeout: 3000

這里注釋可能有點(diǎn)多,不過根據(jù)注釋應(yīng)該都能知道每個(gè)參數(shù)的意思

4. zuul的啟動(dòng)項(xiàng)

需要在啟動(dòng)類上添加@EnableEurekaClient和@EnableZuulProxy開啟eureka客戶端和zuul代理來使用相關(guān)功能
ZuulApplication.java

package com.zuul;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

/**
 * @ClassDescription: zuul啟動(dòng)類
 * @Author:李白
 * @Date:2023/5/31 9:55
 */
@EnableEurekaClient
@EnableZuulProxy
@SpringBootApplication
public class ZuulApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class, args);
    }
}

六、啟動(dòng)服務(wù)并查看注冊(cè)中心

1. 啟動(dòng)eureka

先啟動(dòng)eureka服務(wù),看如下紅框即是啟動(dòng)成功
spring cloud搭建(zuul)

2. 啟動(dòng)service1

spring cloud搭建(zuul)

3. 啟動(dòng)service2

spring cloud搭建(zuul)

4. 啟動(dòng)zuul

再啟動(dòng)zuul服務(wù),看到如下紅框即是啟動(dòng)成功
spring cloud搭建(zuul)

5. 訪問注冊(cè)中心地址

http://localhost:8001

6. 查看服務(wù)注冊(cè)信息

spring cloud搭建(zuul)
可看到三個(gè)服務(wù)均出現(xiàn)在注冊(cè)中心

七、測(cè)試zuul功能是否可用

首先使用postman分別直接調(diào)用service1和service2的接口,結(jié)果正常后,再使用zuul網(wǎng)關(guān)調(diào)用兩個(gè)服務(wù)的接口,如果正常返回則表示zuul網(wǎng)關(guān)功能可用。

1. service1接口測(cè)試

使用postman直接調(diào)用service1的接口進(jìn)行測(cè)試(service1的端口號(hào)是8002)
service1的test1 url:

http://localhost:8002/service1-pre/service1/zuul/test1/11

service1的test1 結(jié)果正常
spring cloud搭建(zuul)

2. service2接口測(cè)試

使用postman直接調(diào)用service2的接口進(jìn)行測(cè)試(service2的端口號(hào)是8003)
service2的test2 url

http://localhost:8003/service2-pre/service2/zuul/test2/22

service2的test2 結(jié)果正常
spring cloud搭建(zuul)

3. zuul請(qǐng)求service1接口postman請(qǐng)求調(diào)用,測(cè)試zuul功能

使用postman直接通過zuul調(diào)用service1的接口進(jìn)行測(cè)試(service1的端口號(hào)是8002,通過zuul調(diào)用就是將訪問地址中的端口號(hào)改為zuul的端口號(hào)8004)
zuul調(diào)用service1的test1 url

http://localhost:8004/service1-pre/service1/zuul/test1/11

zuul調(diào)用service1的test1 結(jié)果異常(404)
spring cloud搭建(zuul)

4. zuul請(qǐng)求service2接口postman請(qǐng)求調(diào)用,測(cè)試zuul功能

使用postman直接通過zuul調(diào)用service2的接口進(jìn)行測(cè)試(service2的端口號(hào)是8003,通過zuul調(diào)用就是將訪問地址中的端口號(hào)改為zuul的端口號(hào)8004)
zuul調(diào)用service2的test2 url

http://localhost:8004/service2-pre/service2/zuul/test2/22

zuul調(diào)用service2的test2 結(jié)果正常
spring cloud搭建(zuul)

5. 使用結(jié)論

  • 使用zuul網(wǎng)關(guān)時(shí),依賴版本沖突嚴(yán)重,需要配指定的某些版本,局限性比不用zuul時(shí)的spring cloud更大。
  • 配置的yml文件zuul相關(guān)參數(shù),routes下的服務(wù)名可隨意指定且可定義多個(gè),但經(jīng)過測(cè)試定義兩個(gè)時(shí)會(huì)默認(rèn)生效后者,前者無法生效(即文章中配置的zuul.routes.service1-app不可用,但service2-app正常)。如此一來便只能轉(zhuǎn)發(fā)一個(gè)服務(wù)了,這是有問題的,但目前還未發(fā)現(xiàn)問題出在哪里。
  • service1-app下的path參數(shù)用拼接方式配置如/service1-pre/**這種前綴時(shí),不可用,只能用杠星星來使用,然后在routes同級(jí)上加prefix參數(shù),來指定路由前綴,這也是一個(gè)問題,但目前還未發(fā)現(xiàn)問題出在哪里。
  • 跟path同級(jí)的serviceId參數(shù)是每個(gè)服務(wù)的spring.application.name參數(shù)值,也就是服務(wù)的別名,會(huì)展示在注冊(cè)中心,通過這個(gè)服務(wù)別名實(shí)現(xiàn)指定服務(wù)的轉(zhuǎn)發(fā),當(dāng)然也可以用服務(wù)的url,更直接,且不會(huì)受到eureka的局限,也就是說,使用serviceId來配置,必須有eureka才行,但配置rul,則有沒有eureka都可以,因?yàn)閡rl指定的是具體的服務(wù)地址,而非注冊(cè)中心的服務(wù)別名。

其中的一些問題還請(qǐng)知道如何解決的大佬留言指教一二,感謝。

以上就是zuul的使用了。文章來源地址http://www.zghlxwxcb.cn/news/detail-473325.html

到了這里,關(guān)于spring cloud搭建(zuul)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 微服務(wù)網(wǎng)關(guān):Spring Cloud Zuul 升級(jí) Spring Cloud Gateway 的核心要點(diǎn)

    微服務(wù)網(wǎng)關(guān):Spring Cloud Zuul 升級(jí) Spring Cloud Gateway 的核心要點(diǎn)

    在routes路由規(guī)則中,根據(jù)path去匹配,如果匹配中,就使用對(duì)應(yīng)的路由規(guī)則進(jìn)行請(qǐng)求轉(zhuǎn)發(fā) 如果無法從routes中匹配,則根據(jù)path用“/”去截取第一段作為服務(wù)名進(jìn)行請(qǐng)求轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)時(shí),默認(rèn)將第一段截取調(diào) 如果截取的服務(wù)名不在注冊(cè)中心中存在服務(wù),則報(bào)錯(cuò)404 在routes路由規(guī)則中

    2024年02月07日
    瀏覽(27)
  • Spring Cloud實(shí)戰(zhàn)案例 │ Apollo和Zuul的整合開發(fā)

    Spring Cloud實(shí)戰(zhàn)案例 │ Apollo和Zuul的整合開發(fā)

    Apollo是攜程研發(fā)的開源配置管理中心,能夠集中管理應(yīng)用于不同環(huán)境、不同集群的配置,配置修改后能夠?qū)崟r(shí)推送到應(yīng)用端,并且具備規(guī)范的權(quán)限、流程治理等特性。 本案例結(jié)合一個(gè)案例介紹Apollo和Zuul的整合開發(fā)。整個(gè)應(yīng)用分為4個(gè)微服務(wù)項(xiàng)目,分別是Eureka服務(wù)器項(xiàng)目mweath

    2024年02月14日
    瀏覽(21)
  • 在Spring Cloud中使用組件Zuul網(wǎng)關(guān),并注冊(cè)到Eureka中去

    在Spring Cloud中使用組件Zuul網(wǎng)關(guān),并注冊(cè)到Eureka中去

    在上一篇中,我們搭建了Spring Cloud的父子模塊,并實(shí)現(xiàn)了一個(gè)Eureka子模塊的啟動(dòng),可以通過瀏覽器地址去訪問Eureka主頁了,相信了解過的童鞋應(yīng)該看到,主頁上并未有任何服務(wù)去注冊(cè),那么我們就在這篇,使用zuul網(wǎng)關(guān)作為第一個(gè)注冊(cè)到Eureka注冊(cè)中心的服務(wù)吧。 上一篇博文地

    2024年02月05日
    瀏覽(98)
  • 【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程

    JDK 1.8+ Maven 3.6+ Spring Boot 2.2.4.RELEASE Spring Cloud Hoxton.SR1 Spring Cloud Alibaba 2.2.0.RELEASE 官網(wǎng)推薦對(duì)應(yīng)版本 本文主要介紹了如何搭建一個(gè) Spring Cloud Alibaba 項(xiàng)目,適合已經(jīng)熟練使用 Spring Boot ,想要學(xué)習(xí)搭建 Spring Cloud Alibaba 項(xiàng)目的小伙伴。 Spring Cloud Alibaba 為分布式應(yīng)用程序開發(fā)提供了

    2023年04月18日
    瀏覽(22)
  • spring cloud搭建教程

    spring cloud搭建教程

    ???????? Spring cloud是一個(gè)基于Spring Boot實(shí)現(xiàn)的服務(wù)治理工具包,在微服務(wù)架構(gòu)中用于管理和協(xié)調(diào)服務(wù)的微服務(wù):就是把一個(gè)單體項(xiàng)目,拆分為多個(gè)微服務(wù),每個(gè)微服務(wù)可以獨(dú)立技術(shù)選型,獨(dú)立開發(fā),獨(dú)立部署,獨(dú)立運(yùn)維.并且多個(gè)服務(wù)相互協(xié)調(diào),相互配合,最終完成用戶的價(jià)值. Spring C

    2024年02月04日
    瀏覽(19)
  • Spring Cloud應(yīng)用- Eureka原理、搭建

    Spring Cloud應(yīng)用- Eureka原理、搭建

    初期對(duì)Spring Cloud的學(xué)習(xí)以應(yīng)用搭建為主,所以內(nèi)容不會(huì)太枯燥。 一直以來,自以為Spring全家桶的學(xué)習(xí)中,Spring framework是基礎(chǔ)中的基礎(chǔ),部分內(nèi)容也還是必須要讀源碼去理解底層原理,SpringMVC、SpringBoot,甚至Mybatis等等,都是如此。但是對(duì)于Spring Cloud來說,就從應(yīng)用入手,以系

    2024年02月06日
    瀏覽(89)
  • Spring Cloud + Spring Boot 項(xiàng)目搭建結(jié)構(gòu)層次示例講解

    Spring Cloud + Spring Boot 項(xiàng)目搭建結(jié)構(gòu)層次示例講解

    以下是我搭建Spring cloud項(xiàng)目架構(gòu)的經(jīng)驗(yàn),我將以圖片的形式和大家進(jìn)行分享;至于Spring Boot的搭建經(jīng)驗(yàn),我會(huì)在圖后以文字描述的方式和大家分享,請(qǐng)往下看: Spring Boot的搭建經(jīng)驗(yàn),我會(huì)以文字描述的方式和大家分享,請(qǐng)往下看: Controller 層 :Controller 層負(fù)責(zé)處理客戶端的請(qǐng)

    2024年02月11日
    瀏覽(32)
  • idea快速搭建一個(gè)spring-cloud

    idea快速搭建一個(gè)spring-cloud

    1、創(chuàng)建一個(gè)空的maven項(xiàng)目! 2、創(chuàng)建一個(gè)注冊(cè)中心模塊 3、配置注冊(cè)中心 配置文件改用yml,配置如下: 注意pom文件中springcloud與springboot的版本對(duì)應(yīng)問題 啟動(dòng)成功后,訪問本地+端口即可看到注冊(cè)中心頁面,說明成功啦!

    2024年02月01日
    瀏覽(28)
  • IDEA2022搭建Spring Cloud多模塊項(xiàng)目

    IDEA2022搭建Spring Cloud多模塊項(xiàng)目

    注意:創(chuàng)建父模塊選用Spring Initializr的方式創(chuàng)建,讓父模塊繼承springboot的maven配置,之后的所有子模塊都通過maven的方式創(chuàng)建,子模塊繼承父模塊就會(huì)間接繼承springboot相關(guān)的配置,web,api模塊再另外添加spring-boot-starter-web,spring-boot-starter-tomcat相關(guān)的依賴。網(wǎng)上有很多教程父模塊

    2023年04月08日
    瀏覽(30)
  • springboot整合spring cloud gateway搭建網(wǎng)關(guān)服務(wù)

    springboot整合spring cloud gateway搭建網(wǎng)關(guān)服務(wù)

    spring cloud netflix zuul、spring cloud gateway是最常見的微服務(wù)網(wǎng)關(guān),通過網(wǎng)關(guān),我們可以在請(qǐng)求到達(dá)后端指定服務(wù)之前/后端服務(wù)處理完業(yè)務(wù)響應(yīng)數(shù)據(jù)之后對(duì)響應(yīng)進(jìn)行對(duì)請(qǐng)求/響應(yīng)進(jìn)行處理。 比如常見的參數(shù)校驗(yàn)、接口鑒權(quán)等等,在后端服務(wù)的攔截器和過濾器能做的事在網(wǎng)關(guān)都可以做

    2024年02月07日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包