本文将给大家介绍的是Zuul的插件机制及定制化开发!
Zuul的插件机制及定制化开发
Zuul的另外一个重要机制就是Filter动态加载机制。Zuul支持的动态Filter由Groovy代码编写,动态管理Groovy的File目录变更并动态编译和加载。
● Filter类文件动态管理
Zuul通过FilterFileManager组件监控存放Filter文件的目录,定期扫描这些目录,如果发现有新Filter源码文件或者Filter源码文件有改动,则对文件进行编译和加载。FilterFileManager管理目录轮询的变化和新的Groovy过滤器。轮询间隔和目录在类的初始化中指定,并且轮询器将进行检查、更改和添加操作。下面的代码开启轮询线程。
startPoller开启轮询线程以定时调用manageFiles方法扫描目录,监听目录变化的startPoller方法在FilterFileManager初始化时调用一次下面的代码完成目录扫描及检测。
● Filter类文件动态编译
Zuul动态加载Filter文件,并通过编译器将文件编译成Class,目前Zuul通过定义DynamicCodeCompiler接口及Groovy编译的实现类GroovyCompiler 来 完 成 Groovy 编 写 的 Filter 的 动 态 编 译 。
DynamicCodeCompiler接口定义如下:
GroovyCompiler类型加载的源码如下:
● Java类型动态Zuul Filter加载
基于Zuul的字节码加载机制和File文件扫描与类文件动态加载机制,也支持基于Java语言的动态Zuul Filter加载(因为篇幅所限,代码部分省略)。
代码以图片形式展现出来,就是为了能够让大家手敲一遍,不要CV。
本文给大家讲解的内容是微服务网关:Zuul的插件机制及定制化开发
- 下篇文章给大家讲解的内容是微服务网关:Zuul的动态路由
- 觉得文章不错的朋友可以转发此文关注小编;
- 感谢大家的支持!
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。