网关:Zuul

来源:
《微服务架构实战160讲》
https://www.jianshu.com/p/d1e61f9fc13a?utm_source=oschina-app

API网关的基本功能:
在这里插入图片描述

Zuul网关

1 场景

Zuul实现了跨区高可用、防爬防攻击、健康检查、屏蔽坏节点、流量判断等诸多功能

  • API网关

类似单体应用中的过滤器,在请求到达业务服务器之前可以做一些操作

  • 红绿部署

类似配置中心Apollo可以实现的蓝绿部署(流量判断)

  • 开发者测试分支

也是通过流量判断,使部分流量达到测试代码而不是全部

  • 埋点测试

也是通过流量判断,使部分流量达到埋点代码而不是全部

  • 压力测试

也是通过流量判断

  • 调试路由

也是通过流量判断,将代码放到线上来调试

  • 金丝雀测试

也是通过流量判断,部分流量测试金丝雀代码,如果没问题,再全量切换

  • 粘性金丝雀

同金丝雀测试,不过固定了用户,如果第一次到达了金丝雀代码,下一次就依然会到达此处,而不是随机分配

  • 失败注入测试

注入错误,看看业务服务器的容错性

  • 降级测试

网关检测到错误后,能执行降级,将流量打向降级的集群,可以跟失败注入测试结合来测试降级能力

2 架构设计+源码简析(1.0)

Zuul网关的核心是一系列的过滤器,可以对请求或者响应结果做一系列过滤,在zuul中过滤器分为四种类型(Type),每一种Type中可以有多个拦截器,开发人员可自行指定执行顺序(ExecutionOrder),只要满足指定的条件(Criteria),就执行指定的动作(Action):

1 PRE Filters(前置过滤器) :当请求会路由转发到具体后端服务器前执行的过滤器,比如鉴权过滤器,日志过滤器,路由选择过滤器

2 ROUTING Filters (路由过滤器):该过滤器作用是把请求具体转发到后端服务器上,一般是通过Apache HttpClient 或者 Netflix Ribbon把请求发送到具体的后端服务器上

3 POST Filters(后置过滤器):当把请求路由到具体后端服务器后执行的过滤器,可以添加标准http 响应头、收集一些统计数据(比如请求耗时等)、写入请求结果到请求方等。

4 ERROR Filters(错误过滤器):当任何一个其他类型过滤器执行出错时候执行该过滤器

  • 总体架构+原理
    在这里插入图片描述
    开发/运维人员通过管理模块来管理过滤器,可以设置不同的状态,如用于金丝雀测试的状态等,然后存储到FilterPersister中,如数据库,需要做一个表出来存储

FilterPoller会定期扫描FilterPersister(通过ZuulFilterDaoFactory,工厂模式),加载新的过滤器进FilterDirectory,不同类型的过滤器有各自的目录,FileManager组合了这几个目录,使用一个线程扫描FilterDirectory,加载到FilterLoader中,最终送到FilterRunner中

FilterRunner则完成所有请求流程的过滤,是最核心的组件

请求入口:ZuulServlet本质是一个HttpServlet,会拦截所有请求,执行四个过滤器方法,方法内部会将具体实现交给FilterRunner(委派模式)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值