SpringCloud教程- 路由网关Zuul (SpringCloud版本Greenwich.SR4)

LTE随机接入实战:如何通过PRACH前导码优化小区覆盖半径(附计算公式) 本文深入探讨了LTE网络中PRACH前导码格式对小区覆盖半径的关键影响。通过解析不同前导码格式(如Format 0-3)的物理参数与覆盖能力,提供了核心计算公式与实战Python脚本,指导网络工程师根据覆盖需求、环境多径和容量等因素,科学选择前导码格式以优化边缘用户接入成功率,实现精准的网络规划与优化。 阅读详情


代码地址:github-spring-cloud地址

Zuul简介

Zuul是NetFlix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用。Zuul的核心是一些列的过滤器,这些过滤器可以完成以下功能。

  • 身份认证与安全:识别每个资源的验证要求,并拒绝那些与要求不符合的请求。
  • 审查与监控:在边缘位置追踪有意义的数据和统计结果,从而带来精确的生产视图。
  • 动态路由:动态的将请求路由到不同的后端集群。
  • 压力测试:逐渐增加指向集群的流量,以了解性能。
  • 负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求。
  • 静态响应处理:在边缘位置直接建立部分响应,从而避免其转发到内部集群。
  • 多区域弹性:跨越AWS Region进行请求路由,旨在实现ELB(Elastic Load Balancing)使用的多样化,以及让系统的便越更贴近系统的使用者。

SpringCloud对zuul进行了整合和增强,Zuul使用的默认HTTP客户端是Apache HTTP Client,也可以使用使用其他的。
使用Zuul之后的架构如图所示(图片转载方志朋博客):
在这里插入图片描述

创建zuul-gateway工程

pom文件如下:

<?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-learn</artifactId>
        <groupId>com.sl.learn.cloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.sl.learn.cloud</groupId>
    <artifactId>zuul-gateway</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-hystrix -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>

    </dependencies>

</project>

配置文件application.yml

server:
  port: 8089

spring:
  application:
    name: zuul-gateway

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8080/eureka/

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always
    shutdown:
      enabled: true
zuul:
  routes:
    ## 名字任意写
    api-feign:
      path: /api-feign/**
      ## 注册到eureka Id
      serviceId: eureka-feign
    api-ribbon:
      path: /api-ribbon/**
      ## 注册到eureka Id
      serviceId: server-ribbon

启动类ZuulGatewayApplication

@SpringBootApplication
@EnableZuulProxy
@EnableDiscoveryClient
public class ZuulGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZuulGatewayApplication.class,args);
    }
}

此工程依赖前面工程在这里插入图片描述分别依次启动,
访问路径为A:http://localhost:8089/api-feign/hi?name=123
在这里插入图片描述
访问路径为B:http://localhost:8089//api-ribbon/hi?name=123
在这里插入图片描述
这说明zuul起到了路由的作用

服务过滤

自定义MyZuulFilter

@Component
public class MyZuulFilter extends ZuulFilter {

    private static Logger log = LoggerFactory.getLogger(MyZuulFilter.class);

    @Override
    public String filterType() {
        return "pre";
    }

    @Override
    public int filterOrder() {
        return 0;
    }

    @Override
    public boolean shouldFilter() {
        return false;
    }

    @Override
    public Object run() throws ZuulException {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString()));
        Object accessToken = request.getParameter("token");
        if(accessToken == null) {
            log.warn("token is empty");
            ctx.setSendZuulResponse(false);
            ctx.setResponseStatusCode(401);
            try {
                ctx.getResponse().getWriter().write("token is empty");
            }catch (Exception e){}

            return null;
        }
        log.info("ok");
        return null;
    }
}

  • filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:
    pre:路由之前
    routing:路由之时
    post: 路由之后
    error:发送错误调用
  • filterOrder:过滤的顺序
  • shouldFilter:这里可以写逻辑判断,是否要过滤,本文true,永远过滤。
  • run:过滤器的具体逻辑。可用很复杂,包括查sql,nosql去判断该请求到底有没有权限访问。
    访问地址不加token
    在这里插入图片描述
    访问地址加上token
    在这里插入图片描述
SATA硬件电路设计实战:从接口规范到高速布线技巧 本文深入探讨了SATA硬件电路设计的核心要点与实战技巧。从接口物理电气规范、AC耦合电容与阻抗控制等基础,到FPGA/SoC高速收发器选型配置,再到应对6Gbps高速信号的PCB布局布线艺术,系统性地解析了SATA电路设计中的关键挑战与解决方案,助力工程师规避常见陷阱,实现稳定可靠的存储接口设计。 阅读详情

相关推荐

arduino esp8266_Arduino传感器教程 第22章ESP8266 控制 5V 继电器

ESP8266控制5V继电器目录一、NodeMCU二、工作原理本文将使用亚马逊 AlexaEcho 和 ESP8266 控制 5V 继电器。NodeMCUNodeMCU 是一个开源的 IoT 物联网硬件开发板,由于它支持 WIFI 功能且使用方法十分类似 Arduino 开发板,所以近些年获得了越来越多来自全世界的创客朋友们的青睐。NodeMCU 尺寸与 Arduino Nano 类似。...

weixin_39611722的博客 3456

SpringCloud教程-注册中心(Consul)(SpringCloud版本Greenwich.SR4)

文章目录consul简介Consul 的优势:创建工程consul-client consul简介 Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具(比如 ZooKe...

境里婆娑 483

OceanBase迁移平台OMS企业版部署

OceanBase迁移平台OMS企业版部署摘要: 本文档详细介绍了OceanBase迁移平台OMS企业版的部署流程,包含环境准备、OAT部署管理、MetaDB部署等关键步骤。

Sebastien23的博客 521

基于gradle使用springboot2的springcloud-Greenwich.SR4多模块项目--openfeign和gateway使用

gradle项目里的build.gradle相当于maven的pom.xml,可以配置整个项目依赖和各个模块的依赖 idea新建项目,gradle,不选java,创建一个空项目,如果选了java,会在根目录创建src目录,因为是多模块,所以不需要再根目录写代码 下一步可以设置项目groupid 创建好空项目,idea会添加gradle程序,这些文件应该和代码一起放到git里,这样才是完整的gr...

老专家的博客 1505

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

【深度解析】解决 NVIDIA 显卡“掉卡”与 Xid 79 错误:开启持久化模式 (Persistence Mode)

Edward的博客 865

【AI智能体】Dify 搭建发票识别助手操作实战详解

Dify 搭建发票识别专属助手操作实战详解

congge 5549

Spring Cloud Config实现集群配置中心

Spring Cloud Config为分布式系统提供了配置服务器和配置客户端,可以管理集群中的配置文件。 使用Git、SVN等版本管理系统存放配置文件,配置服务器会到版本管理系统获取配置,集群中的配置客户端再到配置服务器中获取配置。 开发工具:IntelliJ IDEA 2019.2.2 一、创建配置服务器 1、SVN服务器添加项目和配置文件 config-client-dev.yml内容: server: port: 8092 test: user: name: aa .

gdjlc的专栏 502

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2795

SpringCloud教程- 服务链路追踪(Spring Cloud Sleuth)(SpringCloud版本Greenwich.SR4)

文章目录一、Sleuth简介二、为何使用Sleuth三、构建工程server-zipkinzipkin-serivce-hizipkin-server-hello四、 启动工程演示 一、Sleuth简介 微服务跟踪(sleuth)其实是一个工具,它在整个分布式系统中能跟踪一个用户请求的过程(包括数据采集,数据传输,数据存储,数据分析,数据可视化),捕获这些跟踪数据,就能构建微服务的整个调用链的视图...

境里婆娑 465

[VCS]VCS checkpoint简介以及其在SoC验证加速中的作用

VCS checkpoint是Synopsys VCS提供的快照/恢复机制,可显著加速SoC验证。其核心是在仿真关键节点(如完成初始化后)保存系统状态,后续测试可直接从该点恢复,避免重复执行冗长的初始化阶段(如boot、DDR训练等)。该技术特别适用于多测试用例共享同一初始状态的场景,通过分离初始化与功能验证流程,可提升回归效率3-5倍。需注意处理DPI-C状态同步、版本管理及存储优化等问题,结合UVM和自动化脚本可实现更高效的验证流程。典型应用可节省数百万cycle的重复仿真时间。

元直的博客 776

破盾实录|Vueling航空阿卡迈防护逆向:从503挑战到Cookie生成的全流程拆解

摘要:文章分享了作者在爬取西班牙伏林航空(Vueling)机票数据时,遭遇阿卡迈(Akamai)防护系统的实战经历。起初简单的请求被拦截返回503错误,分析发现阿卡迈通过混淆JS代码实施"挑战-验证"机制,需模拟真实浏览器环境才能获取有效Cookie。作者详细拆解了逆向过程:从抓包分析JS挑战流程,到破解代码混淆和控制流平坦化,最终用Python+Pyppeteer成功模拟浏览器特征,突破防护获取数据。整个过程涉及JS反混淆、环境检测绕过和Cookie生成验证等关键技术点,为类似防护系统

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1643

SpringCloud 2.x学习笔记:4、Zuul(Greenwich版本)

1、Zuul简介 zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用。 请参考官方文档: https://springcloud.cc/spring-cloud-dalston.html#_router_and_filter_zuul Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/user转发到到user服务...

程裕强的专栏 2352

【乐企】有关乐企能力测试接口对接-基础版(详细)

乐企能力测试接口对接详细代码以及步骤

九七的博客 7666

Zuul 核心

0. 前言 SpringBoot版本:2.1.9.RELEASE SpringCloud版本:Greenwich.SR4 1. 核心简述 客户端向网关发起的请求,通过 ZuulServlet 利用过滤器 ZuulFilter 在不同阶段(前置、路由、后置)进行处理后返回结果 2. 请求处理流程 3. ZuulFilter 过滤器执行流程 前置、路由、后置方法按顺序执行,每个方法中的过滤器按顺序执行 preRoute: ServletDetectionFilter:判断请求是否来自 Dispat

qq_42467713的博客 246

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

史上最全的SpringCloud入门学习教程

写在前面: 我是「境里婆娑」。我还是从前那个少年,没有一丝丝改变,时间只不过是考验,种在心中信念丝毫未减,眼前这个少年,还是最初那张脸,面前再多艰险不退却。 写博客的目的就是分享给大家一起学习交流,如果您对 Java感兴趣,可以关注我,我们一起学习 相关文章: 今天我把写过的SpringCloud系列的文章全部整理在此,方便大家学习查看! SpringCloud教程-服务的注册与发现Eureka(SpringCloud版本Finchley) SpringCloud教程- 服务消费者(rest+ribb.

境里婆娑 1031

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

springboot2 springcloud Greenwich.SR3 构建微服务--11.gateway网关实现

Spring Cloud已经放弃Netflix Zuul了。现在Spring Cloud中引用的还是Zuul 1.x版本,而这个版本是基于过滤器的,是阻塞IO,不支持长连接。Zuul 2.x版本跟1.x的架构大一样,性能也有所提升。既然Spring Cloud已经不再集成Zuul 2.x了,那么是时候了解一下Spring Cloud Gateway了。 Netflix Zuul 1.x VS...

长河的博客 1566

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SpringCloud(八):Zuul网关【Greenwich 版】

网关是什么就不用多说了,网关最大的作用就是隐藏我们内部服务器的IP地址,外界通过网管访问,由网管决定请求是否可以进入内部服务,因此网管也可以做权限检验,网关还具备动态路由,负载均衡等功能。 搭建zuul模块 pom文件 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;art...

ROAOR1的博客 548

SpringCloud 集成zuul路由网关

介绍 Zuul 作为路由网关组件,在微服务架构中有着非常重要的作用,主要体现在以下6个方面。 1:Zuul、Ribbon以及Eureka相结合,可以实现智能路由和负载均衡的功能,Zuul能够 将请求流量按某种策略分发到集群状态的多个服务实例。 2:网关将所有服务的API接口统 聚合,并统 对外暴露。外界系统调用 API 接口时, 都是由网关对外暴露的API接口,外界系统不需要知道微服务系统中各服务...

zh_haos的博客 333

SpringCloud微服务(学习笔记):网关 Zuul

网关 Zuul

lamperouge_conan的博客 470

SpringCloud2.x Greenwich版本搭建:(四) zuul网关

1.Zuul网关? 是什么:网关相当于一个网络服务架构的入口,所有网络请求必须通过网关转发到具体的服务。 作用:统一管理微服务请求,登录验证,权限控制、负载均衡、路由转发、监控、安全控制黑名单和白名单等 区别:网关是对所有服务的请求进行分析过滤,过滤器是对单个服务而言。 2.创建Module项目springcloud-zuul <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache

小猪呀的博客 283

【SpringCloud Greenwich版本】第六章:智能路由(zuul)

【SpringCloud】第一章:网关(zuul)(Greenwich版本)

小好的博客 1406

SpringCloud学习第七篇:Zuul学习(Greenwich.SR1版本)

一、什么是Zuul   Zuul作为微服务系统的网关组件。所有从设备或网站来的请求都会经过Zuul到达后端,用于构建边界服务,致力于动态路由、过滤、监控、弹性伸缩和安全。Zuul底层利用各种filter来实现如:认证和安全、性能检测、动态路由、压力测试、负载均衡、静态资源处理。 二、Zuul和Nginx的区别 相同点   Zuul和Nginx都可以实现负载均衡、反向代理(隐藏真实i...

weixin_30293079的博客 295

走进Spring Cloud之七 简单Zuul(路由网关)(Greenwich版本)

开发者可以通过使用Zuul来创建各种校验过滤器,然后指定哪些规则的请求需要执行校验逻辑,只有通过校验的才会被路由到具体的微服务接口,不然就返回错误提示。通过这样的改造,各个业务层的微服务应用就不再需要非业务性质的校验逻辑了,这使得我们的微服务应用可以更专注千业务逻辑的开发,同时微服务的自动化测试也变得更容易实现。在 Spring Cloud 的在微服务架构中,前端的应用往往是不可以直接调用我们提供的微服务,而是通过一个API Gateway根据请求的url,路由到相应的服务。...

segegefe的博客 318

springboot2 springcloud Greenwich.SR3 构建微服务--6.服务网关zuul入门使用

Zuul是Spring Cloud全家桶中的微服务API网关。 所有从设备或网站来的请求都会经过Zuul到达后端的Netflix应用程序。作为一个边界性质的应用程序,Zuul提供了动态路由、监控、弹性负载和安全功能。Zuul底层利用各种filter实现如下功能: 认证和安全 识别每个需要认证的资源,拒绝不符合要求的请求。 性能监测 在服务边界追踪并统计数据,提供精确的生产视图。 动态路由 ...

长河的博客 1115

Spring Cloud 学习 | - 09 -Zuul路由网关(二)

文章目录Spring Cloud 学习 | - 09 -Zuul路由网关(二)1. 添加依赖2. 开启服务发现3. 编写配置3.1 添加eureka配置,获取注册信息3.2 修改zuul配置4. 启动测试 Spring Cloud 学习 | - 09 -Zuul路由网关(二) 学习 Spring Cloud 之路,文中 Spring Boot 版本为 2.1.3.RELEASE,Spring C...

XUDC的程序人生 2246

zuul 启动 threw exception_SpringCloud-Zuul-网关路由过滤器

标注:SpringBoot版本:<version>2.1.11.RELEASE</version>SpringCloud版本:<spring-cloud.version>Greenwich.SR4</spring-cloud.version>1.创建项目2.修改pom文件(坐标:spring-boot-web、eureka-client、zuul)&...

weixin_39726408的博客 113
上一篇: 自定义SpringBoot Starter实现
下一篇: SpringCloud教程-分布式配置中心Config (SpringCloud版本Greenwich.SR4)
境里婆娑
境里婆娑 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 1万+粉丝 300原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

境里婆娑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值