SpringCloud 微服务 (十二) 服务网关 Zuul 基础

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

在没有网关的时候,若是有不少服务: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进行操做

 

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

 

关于Zuul学习,本篇就笔记到这里,后续再作笔记

还要准备下造航母知识,否则没有机会拧螺丝了,加油

-----------------------------------------------------

相关文章
相关标签/搜索