【Spring Cloud】-Zuul服务网关

什么是服务网关

通常情况,服务内部的各个进程是独立的,也就是每个服务都部署在不同的服务器上,如果外部服务需要访问内部的服务,每个请求都得必须通过网关服务。

为什么使用服务网关

如果一个项目有N个微服务,客户端完成一个请求可以需要调用n个微服务,一个一个打交道吗?这样肯定是不现实的,那么就需要一个角色充当request请求的统一入口,充当这个角色的就是Zuul网关,一旦有了网关,所有请求都通过网关,再由网关进行各个微服务的调用。

什么是Zuul

Zuul是Spring Cloud中所用的服务网关,是Netflix公司开源的一个API网关组件,Spring Cloud对其进行封装做到开箱即用,同时,Zuul还可以和Eureka、Ribbon、Hystrix等组件配合使用。在目前的网关解决方案里,有Nginx+Lua、Kong、Tyk。

Zuul的特点

一句话概括Zuul就是: 路由+过滤器=Zuul。所以Zuul的两大功能就是路由转发和过滤器。

路由转发的实现

1、添加Zuul依赖

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

2、配置bootstrap.yml文件,注册到8761Eureka Server上

spring:
  application:
    name: api-gateway
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG
      profile: dev
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

3、在启动类添加@EnableZuulProxy注解,开启路由功能

@SpringBootApplication
@EnableZuulProxy
public class ApiGatewayApplication {
	public static void main(String[] args) {
		SpringApplication.run(ApiGatewayApplication.class, args);
	}
}

4、将api-gateway,product,config注册到同一个EurEka Server上
这里写图片描述
5、然后便可以通过网关Zool路由到其他服务
访问localhost:9090/product/product/list便可以路由到localhost:8085/product/list;
访问Localhost:9090/config/order-test.yml便可以路由到Localhost:8080/order-test.yml;
注:9090是网关服务端口,9090后边的product和config是服务名称

但是 这种方式,必须使用固定的方式,比如固定的服务名称,如果我們想將服务名称自定义的话,可以使用自定义路由

自定义路由

在配置文件添加Zuul即可

spring:
  application:
    name: api-gateway
  cloud:
    config:
      discovery:
        enabled: true
        service-id: CONFIG
      profile: dev
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
zuul:
  routes:
    myProduct:
      path: /myProduct/**   # /myProduct/product/list -> /product/product/list
      serviceId: product
      sensitiveHeaders:   #不过滤到cookie,设置为空
    #product: /myProduct/**   #简洁写法
  ignored-patterns:   #排除某些路由
    - /**/product/listForOrder

访问localhost:9090/myproduct/product/list便可以路由到localhost:8085/product/list;myproduct自定义的服务名称。

Zuul的四类过滤器API实践

四类过滤器
在这里插入图片描述

  1. 前置pre:路由请求前的加工–参数校验、限流、鉴权
  2. 路由 route:将http请求转发到服务
  3. 后置post:结果的加工 --统计、日志
    4)错误error:上边三类过滤器发生异常后的处理
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

木子松的猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值