美文网首页
SpringCloud 服务网关 Zuul

SpringCloud 服务网关 Zuul

作者: 程序员文集 | 来源:发表于2019-06-23 17:00 被阅读0次

本节记录学习服务网关的基础内容

在没有网关的时候,如果有很多服务:order,product ... 那么客户端会和每个服务一一打交道,这明显不是一个好方式,需要一个服务来充当请求的统一的入口,就是本篇学习的角色---服务网关

那么所有请求都通过网关,是服务的入口,显而易见体现网关的作用和注意点,如果网关挂了,那么所有的请求都摸不着头脑,所以网关要素必须是高可用,稳定性,另外所有的请求都通过网关,访问压力大,说明还具备并发性能,安全性不用说了必备的,根据不同类型的服务,做不同的措施,比如金融行业服务,肯定要对通信数据加密,服务网关是非业务处理的绝佳场所,比如协议转发、防刷新、流量管控、日志等等扩展性

总结以上网关的要素: 稳定性、高可用、性能、并发、安全、扩展性等等

常用的网关配套方案 :

①Nginx 

Nginx简介->性能、高可用是Nginx优越之处,事件驱动型设计,全异步的网络IO处理机制,极少的进程切换,各种优化设计,Nginx由多个不同功能,不同层次,不同类型,耦合度极低的模块组成,维护功能就比较方便,不会影响其他功能

②Kong

基于Nginx二次开发软件,商业软件,不说了

③Tyk

轻量级,快速可伸缩的API网关,支持配额和速度限制,认证,数据分析,多用户多组织,提供全Restful API,GO语言开发,发层面上就存在优势

④Spring Cloud Zuul (本次学习目标)

Netflix提供的一个基于JVM路由和服务端的负载均衡器,专为微服务提供; 如果以Java技术栈为主构建微服务体系,Zuul提供认证鉴权限流动态路由监控弹性安全负载均衡协作单点压测静态响应等边缘服务框架,如果项目用了Spring/Spring Cloud框架,使用Zuul是个不错的选择,如果团队没有专门分配网关服务人员,那么Zuul也是快速上手的选择

Zuul和Nginx相比,在性能、并发方面都是有所不足,在项目开发中,往往会技术混搭,利用不同组件的优势,灵活使用技术组件,在微服务完整生态体系中,选Zuul作为一个前置网关服务,在外部调用的时候,搭配Nginx,使用Nginx暴露Url,Nginx把请求转发多个Zuul服务上,让Nginx承担性能、并发角色


贴一张Request请求&Zuul 生命周期 的过程图 :

从上面可以看出来 Zuul=路由+一堆过滤器 ,说明其核心是一堆过滤器,其中的Origin Server是其他服务,比如product服务、order服务等等,其中custom filter是自定义过滤器,图中仅标出Pre filter下的自定义,在其他filter阶段也是可以自定义,每个Http请求都会经过这些过滤器,经过滤处理得到响应并返回给客户端

上图filter分四种类型 :

●前置(Pre)

请求最先过滤点,在路由前执行,比如可以做校验,鉴权,限流,请求转发等操作

●路由(Route)

将请求转发到origin server,比如觉得某个请求用的不好或者性能不高,此处可以自己重写Http请求

●后置(Post)

此处已经拿到了请求结果,可以对结果做自己喜欢做的事,比如统计、日志、封装、加工结果

●错误(Error)

以上三个filter出现异常,就会进入此处,就可以做一些统一异常处理功能

还有看到一张Zuul架构图,在红色箭头处1,2,3filter之间是没有联系的,通过Request Contents进行操作

再附上一张项目架构图,帮助理解

原文 https://my.oschina.net/u/3829444/blog/1842009

相关文章

网友评论

      本文标题:SpringCloud 服务网关 Zuul

      本文链接:https://www.haomeiwen.com/subject/otcwqctx.html