最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分
● 审查与监控:在边缘位置追踪数据及统计结果,从而为我们提供准确的生产状态。
Zuul1的功能相对比较简单,它本质上是基于Spring MVC框架开发的一个Web Servlet应用。Zuul1的核心模块是一系列Filter过滤器,使用阻塞式的I/O,通过线程池技术实现请求的并发处理。每个请求都对应独立的线程,处理后端的业务逻辑。如下图所示是Zuul1的主要编程模型。
Zuul1的线程模型决定了Zuul1在高并发场景下存在性能瓶颈,所以Netflix为了解决网关的I/O瓶颈,开发了基于NIO(非阻塞I/O)模式的Zuul2。下图是Zuul2基于Reactor模式的架构实现。
Zuul2的设计相对复杂,采用了Netty框架实现异步非阻塞的编程模型,Zuul2虽然在性能上比Zuul1有明显的优势,然而Zuul2的问题是在编程模型和代码调试、排查问题上复杂性比较高。另外Zuul2的线程异步特性也给以本地线程方式进行请求跟踪和监控工作带来了麻烦。
在生态上,Spring Cloud Finchley继续沿用了Zuul1,没有采用Zuul2,一方面是因为Zuul2的改动比较大,从生态稳定性和兼容性上来讲,Zuul1有明显的优势,另一方面是因为Spring Cloud已经基于Spring Boot 2.0和Reactor实现了Spring Cloud Gateway异步网关。
Zuul1目前与Eureka、Ribbon、Hystrix都实现了无缝的对接融合,具备更多额外能力,Zuul1已经部署在很多在生产环境中,经过大规模验证,同时Zuul1可以使用Servlet 3.0规范支持的AsyncServlet进行优化,可以实现前端异步,支持更多的连接数,达到和Zuul2一样的效果,但是不用引入太多异步复杂性。
Spring Cloud Zuul1的接入与配置
========================
1.添加Maven依赖
2.配置文件
3.定义Zuul网关启动类
Zuul的路由配置方式
===========
默认情况下,在application.yml中配置Zuul的路由,主要有三种主要的路由配置方式。
● 单实例serviceId映射
配置文件如下:
上面的路由配置是一个从/users/**到user-service服务的映射规则,我们可以把它简化为一个较简单的配置,映射规则与serviceId都不 用 写 , 可 以 通 过 http://localhost : 8080/userservice/user/test?id=1来调用。Zuul会给user-service添加一个默认的映射规则/user-service/**,相当于:
● 单实例URL映射
除了路由到服务,Zuul还能路由到物理地址,将serviceId替换成URL即可:
最后总结
搞定算法,面试字节再不怕,有需要文章中分享的这些二叉树、链表、字符串、栈和队列等等各大面试高频知识点及解析
最后再分享一份终极手撕架构的大礼包(学习笔记):分布式+微服务+开源框架+性能优化
5ff00ff254613a03fab5e56a57acb)收录**