spring cloud 入门13-Eureka网关——zuul01

本文介绍如何在Spring Cloud中使用Zuul组件搭建API网关,包括配置过程、请求映射及负载均衡策略,实现对分布式系统请求的有效管理和保护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在传统的网站中,我们还会引入如Nginx、F5的网关功能。网关的功能对于分布式网站是十分重要的,首先它可以将请求路由到真实的服务器上,进而保护真实服务器的IP地址,避免直接地攻击真实服务器;其次它也可以作为一种负载均衡的手段,使得请求按照一定的算法平摊到多个节点上,减缓单点的压力;最后它还能提供过滤器,过滤器的使用可以判定请求是否为有效请求,一旦判定失败,就可以将请求阻止,避免发送到真实的服务器,这样就能降低真实服务器的压力。

在Spring Cloud的组件中,Zuul是支持API网关开发的组件,首先来搭建一个最简单的zuul网关
新建项目,添加zuul组件
在这里插入图片描述
在pom文件中添加的组件表示为

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>

然后在main函数中启动网关
在这里插入图片描述
添加yml配置文件

server:
  port: 80
spring:
  application:
    name: zuul
eureka:
  client:
    service-url:
      defaultZone: http://peer2:8002/eureka/

这里端口直接配置为80
基础网管配置就完成了,我们首先通过初始方式来访问product节点下的getUser服务,访问地址为:

http://192.168.1.129:9001/product/getUser/1

需要注意这里的组成,http://192.168.1.129:9001/这是我们的访问主机地址+端口号,/product/getUser/1这里是访问具体路径,我们在代码中这样配置的
在这里插入图片描述
访问结果成功:
在这里插入图片描述
我们启动zuul网关,然后现在我们的zuul(我们的网关配置为80端口,所以不需要输入端口号了)
我们依旧访问上边的product下边的getuser服务,不过这次以zuul的方式去访问(通过80端口),但是现在需要在原来的基础上修改下访问路径了
访问路径为:

http://127.0.0.1/product/product/getUser/1

这里的访问规则为:<主机:端口>/节点名称/访问路径
我们的zuul走的是80端口,所以这里不需要写端口号,第一个/product是指要访问product节点下边的请求,最后的/product/getUser/1是指需要访问这个具体路径
我们对比一下
1:这是直接访问product节点在这里插入图片描述
2:这是访问zuul
在这里插入图片描述
这样就完成了一个基础网关的配置了

除此之外,Zuul也允许配置请求映射,在Zuul中有面向传统网关的配置方式,也有面向服务的配置方式(推荐使用这种方式,可以隐藏真实的访问地址)
代码如下:

# 指定ANT风格的URL匹配



zuul.routes.user-service.path=/u/**



# 指定映射的服务用户地址,这样Zuul就会将请求转发到用户微服务上了



zuul.routes.user-service.url=http://localhost:8001/


这种方式将http://localhost:8001/这个请求路径下的所有请求都转向了/u/** 这种路径,我们要访问user节点下边的的请求可以这样

http://127.0.0.1/u/pro/getUserById?id=1

但是这种方式是硬性指向了8001这个端口,所以做不了负载均衡

推荐下边这种方式:

zuul:
  routes:
    product-service:
      path: /p/**
      serviceId: product

现在去使用zuul网关访问就是:

http://127.0.0.1/p/pro/getUserById?id=1

这样简约多了

注意点:我们看在启动文件中添加的这个注解:@EnableZuulProxy
点进去看到源代码:

@EnableCircuitBreaker
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Import({ZuulProxyMarkerConfiguration.class})
public @interface EnableZuulProxy {
}

发现这个位置使用了@EnableCircuitBreaker,也就是我们的段容器,所以这里需要配置一下短融相关的(上面一章有这个类容)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值