Spring Cloud 学习笔记 —— 服务网关 Zuul 的 HelloWorld

    科技2025-06-26  16

    11.2 Zuul

    Zuul 是 Netflix 公司提供的网关服务,是前置服务Zuul 的功能: 1.权限控制,可以做认证和授权 2.监控请求 3.动态路由 4.负载均衡 5.静态资源处理(不需要转发其他服务,直接在 Zuul 处理)Zuul 中的功能基本上基于过滤器(Filter)实现,它的过滤器有几种不同类型: 1.pre 校验 2.routing 把请求路由到微服务上去 3.post 微服务执行完成,进入 4.error 过滤器执行报错了,进入

    11.2.1 Zuul 的 HelloWorld 级别应用

    (1)在 javaboycloud 项目中新创建一个 Spring Boot 项目 zuul 作为项目的 moudle。

    (2)添加 Spring Web、Eureka Discovery Client、Zuul 依赖

    (3)配置 application.properties

    spring.application.name=zuul server.port=2020 eureka.client.service-url.defaultZone=http://localhost:1111/eureka (4)zuul 服务启动类加 注解,开启网关代理 @SpringBootApplication @EnableZuulProxy public class ZuulApplication { public static void main(String[] args) { SpringApplication.run(ZuulApplication.class, args); } } (5)启动 eureka 服务端、provider 服务和 zuul 服务 (6)测试正常不通过网关访问 provider 服务 hello 接口 http://localhost:1113/hello (7)通过网关代理访问 provider 服务 hello 接口 (8)结论: 直接访问:http://localhost:1113/hello 网关访问:http://localhost:2020/provider/hello 默认:网关的 IP 端口/ eureka 目标服务名/目标服务接口名(9)路由规则也可以自己配置,比如: spring.application.name=zuul server.port=2020 eureka.client.service-url.defaultZone=http://localhost:1111/eureka zuul.routes.javaboy-a.path=/javaboy-a/** zuul.routes.javaboy-a.service-id=provider

    重启 zuul服务,访问

    出了原有的直接访问 provider 服务和通过默认地址中加 provider 服务名访问成功外,/ java-a / hello 也能访问成功,自定义路由规则生效

    (10)上面的更改路由规则配置代码可以更精简, spring.application.name=zuul server.port=2020 eureka.client.service-url.defaultZone=http://localhost:1111/eureka zuul.routes.provider=/javaboy-a/**

    好了先写这么多,话说 Zuul 使用起来真简单,原理:Zuul 和 其他服务都注册都 Eureka 上面了, Zuul 能拿到整个服务列表,Zuul 代理的地址栏中,有要访问的服务名(如 provider),也有要访问的接口(如 hello),所以就能找到目标服务接口了。

    Processed: 0.008, SQL: 8