springcloud6-微服务网关zuul开发实战

1、微服务网关介绍和使用场景
  简介:讲解网关的作用和使用场景 (画图)

    1)什么是网关
        API Gateway,是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求、鉴权、监控、缓存、限流等功能

            统一接入
                智能路由
                AB测试、灰度测试
                负载均衡、容灾处理
                日志埋点(类似Nignx日志)

            流量监控
                限流处理
                服务降级

            安全防护
                鉴权处理
                监控
                机器网络隔离


    2)主流的网关
        zuul:是Netflix开源的微服务网关,和Eureka,Ribbon,Hystrix等组件配合使用,Zuul 2.0比1.0的性能提高很多
        
        kong: 由Mashape公司开源的,基于Nginx的API gateway
        
        nginx+lua:是一个高性能的HTTP和反向代理服务器,lua是脚本语言,让Nginx执行Lua脚本,并且高并发、非阻塞的处理各种请求

2、SpringCloud的网关组件zuul基本使用
       简介:讲解zuul网关基本使用

    1、加入依赖


    2、启动类加入注解 @EnableZuulProxy
        默认集成断路器  @EnableCircuitBreaker

        默认访问规则  
            http://gateway:port/service-id/**

                例子:默认 /order-service/api/v1/order/save?user_id=2&product_id=1
                     自定义 /xdclass_order/api/v1/order/save?user_id=2&product_id=1

        自定义路由转发:
            zuul:
             routes:
                 order-service: /apigateway/**


        环境隔离配置:
            需求 :不想让默认的服务对外暴露接口
                /order-service/api/v1/order/save

            配置:
            zuul: 
                ignored-patterns:
                    - /*-service/api/v1/order/save

3、高级篇幅之Zuul常用问题分析和网关过滤器原理分析

    简介:讲解Zuul网关原理和过滤器生命周期,
     
    1、路由名称定义问题*
        路由映射重复覆盖问题
         zuul:
             routes:
                 order-service: /apigateway/**
          product-service: /apigateway/**
    这种情况下面会把上面覆盖掉 order-service就会失去映射

2、Http请求头过滤问题*
        token能获取cookie不能获取问题
因为zuul会默认将请求头的3中参数去掉
private Set<String> sensitiveHeaders = new LinkedHashSet<>(
Arrays.asList("Cookie", "Set-Cookie", "Authorization"));
 
#在配置文件中加入下面配置
  sensitive-headers:
3、过滤器执行顺序问题 ,过滤器的order值越小,越先执行 4、共享RequestContext,上下文对象

 

 

posted @ 2019-05-27 10:14  valar-dohaeris  阅读(316)  评论(0)    收藏  举报