SpringCloud神兽之一:Zuul

Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。Zuul 可以适当的对多个 Amazon Auto Scaling Groups 进行路由请求。

其架构如下图所示:

Zuul提供了一个框架,可以对过滤器进行动态的加载,编译,运行。过滤器之间没有直接的相互通信。他们是通过一个RequestContext的静态类来进行数据传递的。RequestContext类中有ThreadLocal变量来记录每个Request所需要传递的数据。

过滤器是由Groovy写成。这些过滤器文件被放在Zuul Server上的特定目录下面。Zuul会定期轮询这些目录。修改过的过滤器会动态的加载到Zuul Server中以便于request使用。

下面有几种标准的过滤器类型:

  • PRE:这种过滤器在请求到达Origin Server之前调用。比如身份验证,在集群中选择请求的Origin Server,记log等。
  • ROUTING:在这种过滤器中把用户请求发送给Origin Server。发送给Origin Server的用户请求在这类过滤器中build。并使用Apache HttpClient或者Netfilx Ribbon发送给Origin Server。
  • POST:这种过滤器在用户请求从Origin Server返回以后执行。比如在返回的response上面加response header,做各种统计等。并在该过滤器中把response返回给客户。
  • ERROR:在其他阶段发生错误时执行该过滤器。
  • 客户定制:比如我们可以定制一种STATIC类型的过滤器,用来模拟生成返回给客户的response。

过滤器的生命周期如下所示:

Zuul可以通过加载动态过滤机制,从而实现以下各项功能:

  • 验证与安全保障: 识别面向各类资源的验证要求并拒绝那些与要求不符的请求。
  • 审查与监控: 在边缘位置追踪有意义数据及统计结果,从而为我们带来准确的生产状态结论。
  • 动态路由: 以动态方式根据需要将请求路由至不同后端集群处。
  • 压力测试: 逐渐增加指向集群的负载流量,从而计算性能水平。
  • 负载分配: 为每一种负载类型分配对应容量,并弃用超出限定值的请求。
  • 静态响应处理: 在边缘位置直接建立部分响应,从而避免其流入内部集群。
  • 多区域弹性: 跨越AWS区域进行请求路由,旨在实现ELB使用多样化并保证边缘位置与使用者尽可能接近。

原文发布于微信公众号 - ImportSource(importsource)

原文发表时间:2016-12-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

Windows开机过程和测试方法探索

用户会经常抱怨自从安装自己的应用后,电脑开机变慢,到底是系统的原因还是应用的原因,为了了解这里的问题,探秘了下windows的开机过程和测试方法。 一、开机过...

25710
来自专栏web编程技术分享

【纯JS做的小游戏】兔子抢金币玩法:

3726
来自专栏JAVA高级架构

分布式事务原理及解决方案

分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕单机...

932
来自专栏小李刀刀的专栏

如何提前体验 Laravel 5.5

Laravel 5.5 再过一个多月就要发布了,这将是 Laravel 框架的下一个 LTS release(长期支持版)。本文介绍了在 Laravel 5.5...

2.3K0
来自专栏云计算认知升级

【腾讯云的1001种玩法】 Laravel 整合微视频上传管理能力,轻松打造视频 App 后台

近日,由于有业务需要接入微视频,提供一个微视频的移动端的后台管理,便花了心思,将微视频的 SDK 迁移到了 Laravel ,发布出来,让更多的人更加方便、快捷...

9900
来自专栏Timhbw博客

Windows下iOS开发环境搭建教程

2016-06-1513:59:42 发表评论 2,027℃热度 1.下载工具 2.安装基本文件 3.开始主要步骤 4.总结 目录 可能许多初学者并没...

1K8
来自专栏张善友的专栏

跨平台团队协作项目源码管理软件Mercurial客户端TortoiseHg

Mercurial是一分布式版本控制系统,它可以帮你管理你的项目代码,如果你怕因为在开发过程中,因为小疏忽,而导致改错的代码找不回原来的模样,你就可以借助版本历...

1887
来自专栏小李刀刀的专栏

如何提前体验 Laravel 5.5

Laravel 5.5 再过一个多月就要发布了,这将是 Laravel 框架的下一个 LTS release(长期支持版),对于喜欢追求最新版本的 Larave...

3585
来自专栏Albert陈凯

2018-10-16 svn迁移到Git svn上r80000个哭

这活不应该是Linux管理员的干的吗?什么时候轮到程序员了,操蛋,想清楚自己是干啥的,是为了工作而工作还是为了目标而工作

1051
来自专栏纯洁的微笑

API网关性能比较:NGINX vs. ZUUL vs. Spring Cloud Gateway vs. Linkerd(未)

http://www.infoq.com/cn/articles/comparing-api-gateway-performances

2433

扫码关注云+社区