Zuul网关

亦凉 2021-10-18 23:26 566阅读 0赞

一、Zuul网关简介

  1. zuul是spring cloud中的微服务网关。
    网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由,定位到具体的服务节点上。
  2. Zuul是一个微服务网关,首先是一个微服务。也是会在Eureka注册中心中进行服务的注册和发现。也是一个网关,请求应该通过Zuul来进行路由。
  3. Zuul网关不是必要的。是推荐使用的。
    使用Zuul,一般在微服务数量较多(多于10个)的时候推荐使用,对服务的管理有严格要求的时候推荐使用,当微服务权限要求严格的时候推荐使用。

二、网关的作用

在这里插入图片描述

三、网关的应用

  1. 添加依赖


    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-server

    org.springframework.cloud
    spring-cloud-starter-netflix-zuul
  2. 在main方法上添加@EnableZuulProxy

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

    @SpringBootApplication
    @EnableZuulProxy
    public class Application {

    1. public static void main(String[] args) {
    2. SpringApplication.run(Application.class, args);
    3. }

    }

  3. 修改application.yml配置文件

    server:
    port: 8000
    spring:
    application:

    1. name: zuul

    zuul:
    routes:

    1. # 标识你服务的名字,这里可以自己定义,一般方便和规范来讲还是跟自己服务的名字一样
    2. EUREKA-CLIENT-PRODUCER:
    3. #服务映射的路径,通过这路径就可以从外部访问你的服务了,目的是为了不爆露你机器的IP
    4. #这里zuul是自动依赖hystrix,ribbon的,不是面向单机
    5. path: /EUREKA-CLIENT-PROVIDER/**
    6. #这里一定要是你Eureka注册中心的服务的名称,是因为这里配置serviceId因为跟eureka结合了,
    7. serviceId: EUREKA-CLIENT-PROVIDER

    eureka:
    client:

    1. service-url:
    2. defaultZone: http://admin:123456@127.0.0.1:8761/eureka/
  4. 相关说明

a. 通过zuul访问服务的,URL地址默认格式为:http://zuulHostIp:port/服务名称/服务中的URL

例如:http://127.0.0.1:8000/EUREKA-CLIENT-PROVIDER/get?name=123
b. 服务名称就是配置文件中的spring.application.name。
c. 服务的URL,就是对应的服务对外提供的URL路径

URL匹配 - URL pattern
使用路径方式匹配路由规则。
参数key结构: zuul.routes.customName.path=xxx
用于配置路径匹配规则。
其中customName自定义。通常使用要调用的服务名称,方便后期管理
可使用的通配符有: * ** ?
? 单个字符
* 任意多个字符,不包含多级路径
** 任意多个字符,包含多级路径
zuul.routes.eureka-application-service.path=/api/**
#参数key结构: zuul.routes.customName.url=xxx
#用于配置符合path的请求路径路由到的服务地址。
zuul.routes.eureka-application-service.url=http://127.0.0.1:8080/

服务名称匹配 - service id pattern 通过服务名称路由
key结构 : zuul.routes.customName.path=xxx
#路径匹配规则
zuul.routes.eureka-application-service.path=/api/**
key结构 : zuul.routes.customName.serviceId=xxx
#用于配置符合path的请求路径路由到的服务名称。
zuul.routes.eureka-application-service.serviceId=eureka-application-service
simple service id pattern 简化配置方案
#如果只配置path,不配置serviceId。则customName相当于服务名称。
#符合path的请求路径直接路由到customName对应的服务上。
zuul.routes.eureka-application-service.path=/api/**

路由排除设置 - ignored service id pattern
#配置不被zuul管理的服务列表。多个服务名称使用逗号’,’分隔。
#配置的服务将不被zuul代理。
zuul.ignored-services=eureka-application-service
#通配方式配置排除列表。
zuul.ignored-services=*
#使用服务名称匹配规则配置路由列表,相当于只对已配置的服务提供网关代理。
zuul.routes.eureka-application-service.path=/api/**
#通配方式配置排除网关代理路径。所有符合ignored-patterns的请求路径都不被zuul网关代理。
zuul.ignored-patterns=//test/
zuul.routes.eureka-application-service.path=/api/**

路由前缀配置
#prefix URL pattern 前缀路由匹配
#配置请求路径前缀,所有基于此前缀的请求都由zuul网关提供代理。
zuul.prefix=/api
#使用服务名称匹配方式配置请求路径规则。
#这里的配置将为:http://ip:port/api/appservice/\*\*的请求提供zuul网关代理。
#并将请求路由到服务eureka-application-service中。
zuul.routes.eureka-application-service.path=/appservice/**

zuul网关配置总结

网关配置方式有多种,默认、URL、服务名称、排除|忽略、前缀。
网关配置没有优劣好坏,应该在不同的情况下选择合适的配置方案。
zuul网关其底层使用ribbon来实现请求的路由,并内置Hystrix,可选择性提供网关fallback逻辑。使用zuul的时候,并不推荐使用Feign作为application client端的开发实现。毕竟Feign技术是对ribbon的再封装,使用Feign本身会提高通讯消耗,降低通讯效率,只在服务相互调用的时候使用Feign来简化代码开发就够了。而且商业开发中,使用Ribbon+RestTemplate来开发的比例更高。

发表评论

表情:
评论列表 (有 0 条评论,566人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Zuul 简介

    Zuul 网关介绍 由于微服务“各自为政的特性”是微服务的使用非常麻烦 通常会设立“传播者”作为一个统一入口 网关主要实现请求过滤和请求转发

    相关 springcloud zuul

    网关可以对请求进行过滤拦截,转发等,这种跟过滤器不一样,它可以拦截入口,而不是单独一个服务。 业务场景,会员服务和订单服务,用户必须登录才能调用相关接口(即含有userTok

    相关 Zuul

    zuul包含了对请求进行路由和过滤的两个主要功能。 路由功能负责将外部的请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。 过滤功能则负责将请求的处理过程进行干预

    相关 Zuul服务

    微服务调用过程     前面的博客文章已经介绍过spring cloud的服务的相关内容信息,那么我们回顾一下多个微服务的调用过程。微服务一般会由不同的团队去维护,,那么

    相关 Zuul过滤器

    一、zuul网关过滤器 > Zuul中提供了过滤器定义,可以用来过滤代理请求,提供额外功能逻辑。如:权限验证,日志记录等。 > Zuul提供的过滤器是一个父类。父类是

    相关 Zuul

    一、Zuul网关简介 1. zuul是spring cloud中的微服务网关。 网关: 是一个网络整体系统中的前置门户入口。请求首先通过网关,进行路径的路由