初识zuul

API服务网关

zuul是基于servlet架构,采用filter模式,针对对http协议的API请求进行路由,可以认为是一种API-Gateway。通过对filters的实现, 提供动态路由,监控,弹性,安全等边缘服务。
主要特点时可以通过groovy脚本对请求的Pre、Routing、Post和Error四个切面,进行动态热部署加载进行拦截,进而实现灵活的路由机制。
通过与Netflix其它的OSS组件进行集成,很容易就实现微服务开发


初识zuul_第1张图片

集成方式有三种

直接集成Zuul

不依赖Netflix其它组件和Spring Cloud,需要自定义路由规则和丰富网关服务

随Karyon/Ribbon集成

依赖Netflix其它组件,如Eureka,Ribbon和karyon等,但提供了更丰富的网关服务,路由规则还需自定义实现

随Spring Cloud集成

通过注解即可集成,路由规则可配置,同时也可享用Netflix丰富的网关服务

性能测试

  1. 自吹是胜过nginx
  2. 动态脚本,性能不可能不受影响: 应该做了一定的优化——实例化后进行缓存
  3. JVM系语言,拿单点性能与C语言相比,有点难以自信

Filter实时加载原理

 开启一个转门的线程(A),每隔一段时间会去扫描指定的目录(pre,post等),只扫描.groovy文件,通过对比缓存的最后修改时间与文件的修改时间,如果有修改则清除缓存的Filter实例,创建一个新的GroovyClassLoader去加载该文件进行编译,然后实例化——由于每次创建都是类加器,这些类加载器的父类都是A所在的类加载器,这些因此每都会重新加载class.

Groovy和Scala对比

Groovy专注于脚本市场,与Java进行配合,可以相得益彰,取长补短
Scala是面向函数式编程,但同时支持面向对象,虽然社区活跃,但整体从java搬迁至Scala,目前也不现实。

你可能感兴趣的:(初识zuul)