Zuul网关使用

没有网关的问题

微服务没有网关,会有下面的问题:

  1. 客户端请求多个微服务,增加了客户端复杂性,每个微服务都要做用户认证,限流等,避免和多个微服务打交道的复杂性。

  2. 有跨域问题,不在同一个域。

  3. 认证复杂,每个服务都要独立认证,服务要求的权限不一致。

  4. 难以重构。因为微服务被客户端调用着,重构难以实施。

网关是介于客户端(外部调用方比如app,h5)和微服务的中间层。

Zuul网关

(默认继承了ribbon和hystrix)

  1. 是所有微服务入口,进行分发。

  2. 身份认证与安全。识别合法的请求,拦截不合法的请求。

  3. 监控。在入口处监控,更全面。

  4. 动态路由。动态将请求分发到不同的后端集群。

  5. 压力测试。可以逐渐增加对后端服务的流量,进行测试。

  6. 负载均衡。也是用ribbon。

  7. 限流 。比如我每秒只要1000次,10001次就不让访问了。

在这里插入图片描述

简单使用

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

		<!--zuul -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
		</dependency>
启动类
@EnableZuulProxy
访问网关

http://网关ip:网关端口/服务名/微服务路径
网关会将服务名转换成具体服务的ip和端口,实际进行访问。

网关命名

https://域名/v1/sms/路径

Zuul网关负载

集成了ribbon,同ribbon配置一样

路由端点

zuul.yml配置
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      ##默认是never
      show-details: ALWAYS
      enabled: true
    routes:
      enabled: true
访问http://localhost:port/actuator/routes,可以查看路由策略。用于排错

过滤器策略

http://localhost:port/actuator/filters,查看过滤器。四种过滤器。

error: [],
post: [],
pre: [],
route: []

路由配置

1、通过服务名配置(虚拟主机名)
zuul:
  routes:
    servername: /zidingyi/**
2、自定义命名配置
zuul:
  routes:
    custom-zuul-name: #此处名字随便取
      path: /zuul-custom-name/**
      url: http://localhost:9002/   //服务地址
ribbon和hystrix都会失效
3、基于2,恢复ribbon和hystrix
zuul:
  routes:
    #此处名字随便取
    custom-zuul-name: 
      path: /zuul-custom-name/**
      service-id: no-eureka-api-driver
      
no-eureka-api-driver:
  ribbon: 
    listOfServers: localhost:9003,localhost:9002
ribbon: 
  eureka:
    enabled: false
4、执行serviceid
zuul:
  routes:
    #此处名字随便取
    custom-zuul-name: 
      path: /zuul-custom-name/**
      service-id: api-driver

忽略微服务

忽略服务
zuul:
  routes:
    api-driver: /zuul-api-driver/**
  ignored-services:
  - api-driver
忽略正则
zuul:
  routes:
    api-passenger: /zuul-api-passenger/**
    api-driver: /zuul-api-driver/**
   ignored-patterns: 
    - /*-driver/**

前缀

zuul:
  prefix: /api
  # 是否移除前缀,实际访问时会去掉
  strip-prefix: true

敏感header

zuul:
  #一下配置,表示忽略下面的值向微服务传播,以下配置为空表示:所有请求头都透传到后面微服务。
  sensitive-headers: token

过滤器

zuu大部分功能由过滤器实现。

PRE: 在请求被路由之前调用,可利用这种过滤器实现身份验证。选择微服务,记录日志。
ROUTING:在将请求路由到微服务调用,用于构建发送给微服务的请求,并用http clinet(或者ribbon)请求微服务。
POST:在调用微服务执行后。可用于添加header,记录日志,将响应发给客户端。
ERROR:在其他阶段发生错误是,走此过滤器。

pre-routing->调用微服务->post

自定义过滤器

filterType:pre,routing,post,error
filterOrder:执行顺序,在谁前,在谁后,可以+1,-1。越小越先生效
shouldFilter:此过滤器是否执行,返回true执行,false不执行,可以写过滤器是否执行的判断条件。
run:具体执行逻辑

接口容错

实现FallbackProvider结构,重写方法

限流

pre过滤器,使用令牌桶,设置网关最大接受多少流量。或者通过shouldFilter进行单独服务的限流策略

高可用

zuul作为普通的服务。对外访问。前面加一层(nginx+keepalived)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值