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

spring cloud zuul實(shí)踐

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

一、 描述

Spring Cloud Zuul是基于Netflix開源的Zuul項(xiàng)目構(gòu)建而成,它作為微服務(wù)架構(gòu)中的網(wǎng)關(guān)服務(wù),主要用于實(shí)現(xiàn)動(dòng)態(tài)路由、負(fù)載均衡和請求過濾等功能。

  1. 動(dòng)態(tài)路由:Zuul根據(jù)預(yù)設(shè)的路由規(guī)則將進(jìn)來的請求路由到相應(yīng)的服務(wù)實(shí)例上。路由規(guī)則可以通過配置文件或代碼進(jìn)行定義,接收到請求后,Zuul會(huì)解析請求的URL,并根據(jù)配置的路由規(guī)則找到對應(yīng)的服務(wù)地址,將請求轉(zhuǎn)發(fā)到目標(biāo)服務(wù)。

  2. 負(fù)載均衡:Zuul內(nèi)置了Ribbon負(fù)載均衡器,可以對請求進(jìn)行負(fù)載均衡。當(dāng)一個(gè)服務(wù)有多個(gè)實(shí)例時(shí),Zuul可以使用負(fù)載均衡算法將請求均勻地分發(fā)到不同的實(shí)例上,以提高系統(tǒng)的性能和可擴(kuò)展性。

  3. 請求過濾:Zuul支持自定義過濾器,在請求被路由之前或之后對請求進(jìn)行處理。過濾器可以用于在路由前進(jìn)行身份驗(yàn)證、請求統(tǒng)計(jì)、參數(shù)校驗(yàn)等操作,也可以在路由后處理響應(yīng)結(jié)果,比如修改返回?cái)?shù)據(jù)、添加自定義的響應(yīng)頭等。開發(fā)者可以根據(jù)需求創(chuàng)建不同類型的過濾器,并定義過濾器的執(zhí)行順序。

  4. 整合服務(wù)注冊中心:Zuul可以與服務(wù)注冊中心(如Zookeeper、Eureka)進(jìn)行整合,實(shí)現(xiàn)動(dòng)態(tài)路由和負(fù)載均衡。通過與服務(wù)注冊中心交互,Zuul能夠動(dòng)態(tài)地獲取服務(wù)實(shí)例的信息,并根據(jù)需要進(jìn)行路由和負(fù)載均衡。

  5. 高可用和容錯(cuò):Zuul支持配置多個(gè)實(shí)例運(yùn)行在不同的機(jī)器上,以實(shí)現(xiàn)高可用性。當(dāng)一個(gè)Zuul實(shí)例發(fā)生故障時(shí),其他實(shí)例可以接管請求處理,確保系統(tǒng)的穩(wěn)定性和容錯(cuò)性。

Spring Cloud Zuul通過動(dòng)態(tài)路由、負(fù)載均衡和請求過濾等機(jī)制,提供了一個(gè)強(qiáng)大且靈活的網(wǎng)關(guān)服務(wù)。它能夠統(tǒng)一管理微服務(wù)的入口,實(shí)現(xiàn)請求的轉(zhuǎn)發(fā)和過濾,簡化了微服務(wù)架構(gòu)中的通信和調(diào)用方式,提高了系統(tǒng)的可伸縮性和可維護(hù)性。

????? 下面是使用Spring Cloud Zuul的一般實(shí)踐步驟

二、添加依賴

引入zuul的依賴spring-cloud-starter-netflix-zuul

spring cloud zuul實(shí)踐spring cloud zuul實(shí)踐
1     <dependency>
2       <groupId>org.springframework.cloud</groupId>
3       <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
4     </dependency>
View Code

三、創(chuàng)建啟動(dòng)類:

????? 創(chuàng)建一個(gè)啟動(dòng)類,并使用@EnableZuulProxy注解開啟Zuul代理功能。

spring cloud zuul實(shí)踐spring cloud zuul實(shí)踐
1 @SpringBootApplication
2 @EnableZuulProxy
3 public class GatewayApplication {
4 
5   public static void main(String[] args) {
6     SpringApplication.run(GatewayApplication.class, args);
7   }
8 
9 }
View Code

四、 配置

在配置文件(如application.yml)中定義Zuul的路由規(guī)則??梢允褂肸uul的zuul.routes前綴來配置不同的路由規(guī)則。

spring cloud zuul實(shí)踐spring cloud zuul實(shí)踐
 1 server:
 2   port: 9000
 3 management:
 4   endpoints:
 5     web:
 6       exposure:
 7         include: '*'
 8   server:
 9     port: 12345
10 zuul:
11   routes:
12     configserver:
13       path: /myConfig/**
14       serviceId: config
15     user:
16       path: /myUser/**
17       serviceId: provider
18   ignored-patterns: #忽略指定的路由
19     - /config/**
20     - /gateway/**
21   sensitive-headers:
22 #  ignore-local-service: true # 忽略原來自身的路由。比如,true: 原來的config/xxx/xxx不可再訪問
View Code

上述配置將/myConfig/**的請求轉(zhuǎn)發(fā)到config服務(wù),將/myUser/**的請求轉(zhuǎn)發(fā)到provider服務(wù)。

還可以將網(wǎng)關(guān)注冊到注冊中心實(shí)現(xiàn)高可用。創(chuàng)建bootstrap.yml文件

spring cloud zuul實(shí)踐spring cloud zuul實(shí)踐
 1 spring:
 2   application:
 3     name: gateway
 4   cloud:
 5     zookeeper:
 6       discovery:
 7         register: true
 8         enabled: true
 9       connect-string: 192.168.3.100:2181
10     config:
11       discovery:
12         service-id: config
13         enabled: true
View Code

五、配置過濾器

?通過zuul添加過濾器,對請求進(jìn)行攔截或校驗(yàn)等等

spring cloud zuul實(shí)踐spring cloud zuul實(shí)踐
 1 package com.mike.study.gateway.fiter;
 2 
 3 import com.netflix.zuul.ZuulFilter;
 4 import com.netflix.zuul.context.RequestContext;
 5 import com.netflix.zuul.exception.ZuulException;
 6 import org.apache.commons.lang.StringUtils;
 7 import org.springframework.http.HttpStatus;
 8 import org.springframework.stereotype.Component;
 9 
10 import javax.servlet.http.HttpServletRequest;
11 
12 import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER;
13 import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;
14 
15 /**
16  * @Classname ParameterFilter
17  * @Created by Michael
18  * @Date 2023/7/12
19  * @Description 自定義過濾器
20  */
21 @Component
22 public class ParameterFilter extends ZuulFilter {
23   /**
24    * 前置過濾
25    * @return
26    */
27   @Override
28   public String filterType() {
29     return PRE_TYPE;
30   }
31 
32   /**
33    * 數(shù)值越小,優(yōu)先級越高
34    * @return
35    */
36   @Override
37   public int filterOrder() {
38     return PRE_DECORATION_FILTER_ORDER - 1;
39   }
40 
41   @Override
42   public boolean shouldFilter() {
43     return true;
44   }
45 
46   @Override
47   public Object run() throws ZuulException {
48 
49     // 獲取請求對象
50     RequestContext context = RequestContext.getCurrentContext();
51     HttpServletRequest request = context.getRequest();
52     // 獲取地址欄傳入的參數(shù)
53     String token = request.getParameter("token");
54     System.out.println("token ===>"+token);
55     //模擬校驗(yàn)token,沒有token則終止轉(zhuǎn)發(fā)
56     if (StringUtils.isEmpty(token)) {
57       context.setSendZuulResponse(false);
58       context.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
59     }
60     return null;
61   }
62 }
ParameterFilter.java

以上代碼時(shí)在轉(zhuǎn)發(fā)請求服務(wù)前,對參數(shù)進(jìn)行校驗(yàn),如果沒有token參數(shù),則停止轉(zhuǎn)發(fā),并且返回401錯(cuò)誤

六、測試

測試網(wǎng)關(guān)轉(zhuǎn)發(fā)主要需要請求發(fā)起方,網(wǎng)關(guān)和請求處理方。這里在原來demo的基礎(chǔ)上,增加網(wǎng)關(guān),所以看到有配置中心,以往的文章有項(xiàng)目的搭建介紹。如果不想那么復(fù)雜,可以去掉配置中心,將配置放置各個(gè)module即可,項(xiàng)目組如下

spring cloud zuul實(shí)踐

?

準(zhǔn)備請求發(fā)起方,即consumer,controller通過feign框架請求網(wǎng)關(guān),網(wǎng)關(guān)轉(zhuǎn)發(fā)請求provider。consumer的controller如下

spring cloud zuul實(shí)踐spring cloud zuul實(shí)踐
 1 import com.mike.study.orderconsumer.client.UserClient;
 2 import com.mike.study.orderconsumer.vo.UserVo;
 3 import org.springframework.web.bind.annotation.GetMapping;
 4 import org.springframework.web.bind.annotation.PathVariable;
 5 import org.springframework.web.bind.annotation.RequestParam;
 6 import org.springframework.web.bind.annotation.RestController;
 7 
 8 import javax.annotation.Resource;
 9 
10 /**
11  * @Classname UserRuttingController
12  * @Created by Michael
13  * @Date 2023/7/9
14  * @Description feign框架調(diào)用provider api
15  */
16 @RestController
17 public class UserRuttingController {
18   @Resource
19   private UserClient userClient;
20 
21   @GetMapping("warp/user/2.1/{id}")
22   public UserVo getUser(@PathVariable("id") Integer userId, @RequestParam("token") String token) {
23     System.out.println("使用feign框架調(diào)用provide的api");
24     return userClient.getUser(userId, token);
25   }
26 }
controller

Feign接口

spring cloud zuul實(shí)踐spring cloud zuul實(shí)踐
 1 import com.mike.study.orderconsumer.vo.UserVo;
 2 import org.springframework.cloud.openfeign.FeignClient;
 3 import org.springframework.web.bind.annotation.GetMapping;
 4 import org.springframework.web.bind.annotation.PathVariable;
 5 import org.springframework.web.bind.annotation.RequestParam;
 6 
 7 /**
 8  * @Classname UserFeigClient
 9  * @Created by Michael
10  * @Date 2023/7/9
11  * @Description feign client
12  */
13 
14 @FeignClient("gateway")
15 public interface UserClient {
16 
17   @GetMapping("myUser/user/{id}")
18   public UserVo getUser(@PathVariable("id") Integer userId,@RequestParam("token") String token);
19 }
UserClient

以上Feign接口配合注冊中心zookeeper使用,訪問的網(wǎng)關(guān)地址,而不是直接請求服務(wù)提供者的api。

provider module簡單提供一個(gè)api查詢用戶信息。

六、測試結(jié)果

positive case:token參數(shù)有值

spring cloud zuul實(shí)踐

?negative case:token參數(shù)i為空

spring cloud zuul實(shí)踐

?

總結(jié),就是consumer不再直接請求provider server,而是通過zuul作為中轉(zhuǎn)站,這樣做的好處很多,比如,對consumer的請求進(jìn)行攔截過濾,驗(yàn)證,降流等等。文章來源地址http://www.zghlxwxcb.cn/news/detail-554069.html

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

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

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

相關(guān)文章

  • Spring Cloud Netflix微服務(wù)組件-Eureka

    Spring Cloud Netflix微服務(wù)組件-Eureka

    目錄 CAP理論 注冊中心對比 為什么注冊中心更適合用AP? 分布式系統(tǒng)AP和CP如何取舍? Eureka核心功能點(diǎn) Euraka server啟動(dòng)的主線流程 總體流程圖 @EnableEurekaServer 流程圖 EurekaServerAutoConfiguration EurekaServerInitializerConfiguration Euraka client啟動(dòng)的主線流程 總體流程圖 EurekaClientAutoConfigurat

    2024年02月01日
    瀏覽(1757)
  • 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 實(shí)戰(zhàn)系列之 Zuul 微服務(wù)網(wǎng)關(guān)搭建及配置

    Spring Cloud 實(shí)戰(zhàn)系列之 Zuul 微服務(wù)網(wǎng)關(guān)搭建及配置

    用mavan搭建也可以。(重要的是后面pom里應(yīng)該引入那些依賴,application.yml怎么配置) 由于開始構(gòu)建項(xiàng)目時(shí)選擇了Eureka Server,所以pom.xml中不需要手動(dòng)添加依賴了 首先在啟動(dòng)類SpringcloudApplication中添加EurekaServer的注解:@EnableEurekaServer 訪問注冊中心:按照配置的端口號訪問。我這

    2024年03月10日
    瀏覽(20)
  • 怎么拿Offer拿到手軟?JVM、高并發(fā)、Spring、Netflix、Spring Cloud都要強(qiáng)化了解

    怎么拿Offer拿到手軟?JVM、高并發(fā)、Spring、Netflix、Spring Cloud都要強(qiáng)化了解

    送書第一期 《用戶畫像:平臺(tái)構(gòu)建與業(yè)務(wù)實(shí)踐》 送書活動(dòng)之抽獎(jiǎng)工具的打造 《獲取博客評論用戶抽取幸運(yùn)中獎(jiǎng)?wù)摺?送書第二期 《Spring Cloud Alibaba核心技術(shù)與實(shí)戰(zhàn)案例》 送書第三期 《深入淺出Java虛擬機(jī)》 送書第四期 《AI時(shí)代項(xiàng)目經(jīng)理成長之道》 送書第五期 《Kubernetes原生

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

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

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

    2024年02月05日
    瀏覽(98)
  • 【SpringCloudNetflix】一圖理解Spring Cloud Netflix解決了那些微服務(wù)問題?

    【SpringCloudNetflix】一圖理解Spring Cloud Netflix解決了那些微服務(wù)問題?

    注冊中心:Eureka 負(fù)載均衡:Ribbon、Feign 服務(wù)熔斷:Hystrix 服務(wù)降級:Hystrix 服務(wù)監(jiān)控:Hystrix Dashboard 路由網(wǎng)關(guān):Zuul 配置中心:Config git資源倉庫:Spring Cloud Netflix 參考文章:https://zhuanlan.zhihu.com/p/353806201 坑:依賴版本對應(yīng)問題 不斷學(xué)習(xí)補(bǔ)充中,如理解有偏差的點(diǎn),煩請指教!

    2024年02月08日
    瀏覽(435)
  • Spring Cloud開發(fā)實(shí)踐(六): 基于Consul和Spring Cloud 2021.0的演示項(xiàng)目

    Spring Cloud開發(fā)實(shí)踐(一): 簡介和根模塊 Spring Cloud開發(fā)實(shí)踐(二): Eureka服務(wù)和接口定義 Spring Cloud開發(fā)實(shí)踐(三): 接口實(shí)現(xiàn)和下游調(diào)用 Spring Cloud開發(fā)實(shí)踐(四): Docker部署 Spring Cloud開發(fā)實(shí)踐(五): Consul - 服務(wù)注冊的另一個(gè)選擇 Spring Cloud開發(fā)實(shí)踐(六): 基于Consul和Spring Cloud 2021.0的演示項(xiàng)目

    2024年02月05日
    瀏覽(41)
  • 云原生微服務(wù) 第五章 Spring Cloud Netflix Eureka集成負(fù)載均衡組件Ribbon

    云原生微服務(wù) 第五章 Spring Cloud Netflix Eureka集成負(fù)載均衡組件Ribbon

    第一章 Java線程池技術(shù)應(yīng)用 第二章 CountDownLatch和Semaphone的應(yīng)用 第三章 Spring Cloud 簡介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon Spring Cloud Ribbon 是一套基于 Netflix Ribbon 實(shí)現(xiàn)的客戶端負(fù)載均衡和服務(wù)調(diào)用工具,其主要功能是提供客戶端的負(fù)載均衡算法和服務(wù)

    2024年02月08日
    瀏覽(87)
  • 云原生微服務(wù)治理 第四章 Spring Cloud Netflix 服務(wù)注冊/發(fā)現(xiàn)組件Eureka

    云原生微服務(wù)治理 第四章 Spring Cloud Netflix 服務(wù)注冊/發(fā)現(xiàn)組件Eureka

    第一章 Java線程池技術(shù)應(yīng)用 第二章 CountDownLatch和Semaphone的應(yīng)用 第三章 Spring Cloud 簡介 第四章 Spring Cloud Netflix 之 Eureka 今天我們講解Spring Cloud微服務(wù)的第一代實(shí)現(xiàn):Spring Cloud Netflix Eureka 是 Netflix 公司開發(fā)的一款開源的服務(wù)注冊與發(fā)現(xiàn)組件。 Spring Cloud 使用 Spring Boot 思想為 Eur

    2024年02月08日
    瀏覽(98)
  • 導(dǎo)入SpringCloud-Eureka依賴的問題Cannot resolve org.springframework.cloud:spring-cloud-starter-netflix-eure

    導(dǎo)入SpringCloud-Eureka依賴的問題Cannot resolve org.springframework.cloud:spring-cloud-starter-netflix-eure

    今天使用SpringCloud時(shí)遇到導(dǎo)入SpringCloud-Eureka依賴的問題 Cannot resolve org.springframework.cloud:spring-cloud-starter-netflix-eureka-server:unknown 網(wǎng)上搜了一下,回答多的五花八門,但是不夠簡單粗暴,這里介紹一個(gè)簡單的方法,只需要在項(xiàng)目的pom文件中做些設(shè)置即可 把大象放進(jìn)冰箱里需要幾步

    2024年02月14日
    瀏覽(96)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包