spring cloud gateway入门脑图

spring cloud gateway
    1、服务路由
        基本格式
            id
            uri: lb:service + http + ws
            predicate
            filter
            StripPrefix
                /name/bar/foo的请求会被转发为http://nameserviceip:nameserviceport/bar/foo
        predicate
            如果有很多个Predicate,并且一个请求满足多个Predicate,则按照配置的顺序第一个生效。
            指定时间路由  AfterRouterPredicate,BeforeRouterPredicate
            HeaderRouterPredicate  KV模式,之后匹配才可以
            MethodRouterPredicate 按GET/POST路由
            PathRouterPredicate 按指定路径路由
    2、鉴权
        appId+appKey
        filter
            类型
                pre过滤器
                    鉴权、参数校验、IP限制
                post过滤器
                    数据处理
                        数据加密
                    统一异常处理
            范围
                GatewayFilter
                    AddRequestHeader
                    AddRequestParameter
                    prefixPathGatewayFilter 添加前缀路由
                GlobalGatewayFilter
                自定义Filter
                    实现GatewayFilter Ordered
                    Order值越大则优先级越低
    3、数据处理?
        统一异常处理
            实现ErrorWebExceptionHandler 
            重写handle方法
        加密返回结果
            自定义过滤器
                id:1 uri:lb:order-service predicate: path:/api stringPrefix:1 filter:n900filter
            对称加密
                使用相同的密码进行数据加解密
            非对称加密
                数据传输
                    1)生成公钥私密密码对
                    2)公钥加密,传递信息
                    3)私钥解密获取数据
                数字签名
                    证明这消息是你发的
                    证明这消息内容确实是完整的,没有经过任何形式的篡改
                    私钥签名,公钥验签
    4、负载均衡
        ribbon
    5、熔断、降级
        会有大量的请求进入网关,向其他服务发起调用,其他服务不可避免的会出现调用失败(超时、异常),失败时不能让请求堆积在网关上,需要快速失败并返回给客户端
        hystrix
            默认超时时间 1s
            # hystrix 信号量隔离,3秒后自动超时
hystrix.command.default.execution.isolation:
          strategy: SEMAPHORE
          thread:
            timeoutInMilliseconds: 3000
        自定义熔断
            Filters:
 -name: hystrix
-args:
  -name:myHystrix
  -callbackuri: forward:/myCallback
            新建controller @RequestMapper("/myCallback")
    6、限流
        filter名称必须是RequestRateLimiter
redis-rate-limiter.replenishRate:允许用户每秒处理多少个请求
redis-rate-limiter.burstCapacity:令牌桶的容量,允许在一秒钟内完成的最大请求数
key-resolver:使用SpEL按名称引用bean
            filters:
        - name: RequestRateLimiter
          args:
            key-resolver: '#{@hostAddrKeyResolver}'
            redis-rate-limiter.replenishRate: 1
            redis-rate-limiter.burstCapacity: 3
            @Configuration
class HostAddrKeyResolver
            @Bean
public KeyResolver userKeyResolver() {}
                通过IP限制 exchange -> Mono.just(exchange.getRequest().getRemoteAddress().getHostName());
                通过appkey限制
exchange -> Mono.just(exchange.getRequest().getQueryParams().getFirst("appKey"));
                通过uri限制
exchange -> Mono.just(exchange.getRequest().getPath().value());
        限流算法
            令牌桶
                系统会按恒定 1/QPS 时间间隔往桶里加入 Token,如果桶已经满了就不再加了。新请求来临时,会各自拿走一个 Token,如果没有 Token 可拿了就阻塞或者拒绝服务。
            计数器
                维护一个单位时间内的 计数器,每次请求计数器加1,当单位时间内计数器累加到大于设定的阈值,则之后的请求都被拒绝,直到单位时间已经过去,再将 计数器 重置为零
            漏桶算法
                请求先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求
    7、和zuul对比
        Zuul 基于 Servlet 2.5(使用 3.x),使用阻塞 API,本质上就是一个同步 Servlet,采用多线程阻塞模型。 它不支持任何长连接,如 Websockets。
        Gateway 采用了 Netty 实现异步非阻塞编程模型。异步非阻塞模式启动的线程很少,基本上一个 CPU 上只需一个 EventLoop 处理线程,它使用的线程资源就很少,上下文切换(Context Switch)开销也少。
    8、灰度发布
        WeightRoutePredicateFactory去实现根据分组设置权重进行路由
        filters:
    - StripPrefix=1
    - Weight=order-service, 95

 

原图地址:http://naotu.baidu.com/file/5d850f1f5e99f2effca231ccaa753c4e?token=84d5c40fc783e372

提取码:ZFLc

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值