Spring Cloud 网关服务 zuul 二

有一点上篇文章忘了 讲述,nacos的加载优先级别最高。服务启动优先拉去配置信息。所以上一篇服务搭建我没有讲述在nacos 中心创建的配置文件file可以看到服务端口和注册中心都在配置文件中配置化

属性信息

上一篇我们讲了如何搭建网关zuul 服务。实现了基本的转发功能。这篇文章我们要讲述zuul过滤器的使用。和三个参数的使用

sensitiveHeaders 属性关键字声明:Spring Cloud微服务实战 书中意思为放行字段。而小编在官方文档查看到是忽略不放行的意思。请注意此处,看过Spring Cloud微服务实战同学可以用小编实例代码印证

  • ribbon-isolation-strategy
    • 隔离机制 Spring Cloud 默认的隔离机制hystrix 去做限流、熔断、隔离。一个是基于信号量。一个是基于线程池去完成
      • 信号量模式
        在该模式下,接收请求和执行下游依赖在同一个线程内完成,不存在线程上下文切换所带来的性能开销。默认信号量模式
      • 线程池
        在该模式下,用户请求会被提交到各自的线程池中执行,把执行每个下游服务的线程分离,从而达到资源隔离的作用。当线程池来不及处理并且请求队列塞满时,新进来的请求将快速失败,可以避免依赖问题扩散。
  • ignored-services
    • 忽略指定的服务
  • ignored—patterns
    • 忽略指定的url 路径
  • ignored-headers
    • 忽略指定的header 头部信息
  • sensitiveHeaders
    • 字段比较敏感,不希望传递给下游微服务。 设置空没有要忽略的敏感字段。全部传给下游服务

在上面ignored-headers 和 sensitiveHeaders 职责是有重叠的部分。其实他们是有着关系存在的。sensitiveHeaders的内容会最终合并到ignored-headers内。

验证一下 sensitiveHeaders 字段设置全区忽略 X-ABC

消费者服务 sensitiveHeaders 指定忽略 X-ABC,Authorization

服务提供者转发不做任何调整在服务提供者 和 服务消费者 服务上。都创建一个 UrlFilter 拦截器先设置一下 zuul的yml文件

zuul:
  host:
    # 目标主机的最大连接数,默认值为200
    max-total-connections: 500
    # 每个主机的初始连接数,默认值为20
    max-per-route-connections: 100
  routes:
    discovery-server:
      path: /server/**
      serviceId: cloud-discovery-server
    client-common:
      path: /client/**
      serviceId: cloud-discovery-client
      sensitiveHeaders: X-ABC,X-Foo
  # 所有路由的默认Hystrix隔离模式(ExecutionIsolationStrategy)为SEMAPHORE。如果此隔离模式是首选,则zuul.ribbonIsolationStrategy可以更改为THREAD
  ribbon-isolation-strategy: thread
  # 这个属性意思,* 忽略未指定的服务列表 有具体服务名称 忽略指定的服务
  ignored-services: "*"
  # 忽略指定的url 路径
  ignored—patterns:
  # 忽略指定的header 头部信息
  ignored-headers: Authorization
  # 字段比较敏感,不希望传递给下游微服务。 设置空没有要忽略的敏感字段。全部传给下游服务
  sensitive-headers: X-ABC
  ribbon:
    eager-load:
      # 强制加载,不设置会进行懒加载。spring 第一次请求会非常慢
      enabled: true

package com.xian.cloud.filter;

import lombok.extern.slf4j.Slf4j;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Enumeration;

/**
 * <Description>
 *
 * @author [email protected]
 * @version 1.0
 * @createDate 2019/10/29 13:57
 */
@WebFilter(filterName = "test",urlPatterns = "/*")
@Slf4j
public class UrlFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.warn("UrlFilter init.......");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        Enumeration<String> attributeNames = servletRequest.getAttributeNames();
        HttpServletRequest req = (HttpServletRequest) servletRequest;
        String requestURI = req.getRequestURI();
        String header = req.getHeader("X-Foo");
        String abc = req.getHeader("X-ABC");
        String au
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值