首页 > 其他分享 >zuul.core解析

zuul.core解析

时间:2024-04-25 14:55:39浏览次数:22  
标签:core 调用 zuul 函数 void filter runFilter 解析

zuul.core解析

这里以zuul1.2.3为例子(1.x最后一个版本)

IZuulFilter

zuul的核心实现,主要是filter

函数 功能
boolean shouldFilter(); 用于判断是否需要执行该filter
Object run(); 执行filter的处理逻辑

ZuulFilter

IZuulFilter 的抽象实现,主要函数有以下几个:

函数 功能
String filterType() 返回filter的类型,可以为pre(在route之前执行)、post(在route之后执行)、routeerror(出错时执行)中的一个
int filterOrder() 用于对filter进行排序,值越小,越早执行
ZuulFilterResult runFilter() 判断shouldFilter返回true时,执行filter逻辑

ZuulRunner

该类负责生成一个RequestContext,并执行调用filter

主要函数有几下几个:

函数 功能
void preRoute() 调用所有类型这pre的filter的runFilter函数
void route() 调用所有类型这route的filter的runFilter函数
void postRoute() 调用所有类型这post的filter的runFilter函数
void error() 调用所有类型这error的filter的runFilter函数

FilterRegistry

用于注册filter,调用FilterRegistry.instance()返回实例对象

基中主要用到的是void put(String key, ZuulFilter filter) 函数,用于添加过滤器

RequestContext

上下文件信息,该类用于保存请求的一些状态数据,本质上是一个ConcurrentHashMap<String, Object>,内部使用了ThreadLocal来处理不同请求的并发问题,调用RequestContext.getCurrentContext()获取当前的上下行

ZuulServlet

servlet的实现,在集成到spring中使用时,会通过spring的ServletWrappingController,对该servlet进行包装

ZuulServlet调用了ZuulRunner来执行filter

总结

zuul.core整体比较简单,通过以上几个核心的类,基本可以说明工作方式

用来和spring进行集成的spring-cloud-netflix-zuul,以后再整理

标签:core,调用,zuul,函数,void,filter,runFilter,解析
From: https://www.cnblogs.com/qmcode/p/18157711

相关文章

  • 数据库设计 外键设计 关联表查询 linq efcore
    数据库的设计实体之间的关系图实体EleOrderRowItem.cspublicclassEleOrderRowItem:EleEntity{publicstring?Xxx{get;set;}//外键:一个rowItem属于一个rowpubliclongRowId{get;set;}publicrequiredEleOrderRowRow{get;set;}}......
  • ef core 如何关联查询外键表
    在EFCore中,如果查询查询外键表的内容实体publicclassBlog{publicintBlogId{get;set;}publicstringUrl{get;set;}publicList<Post>Posts{get;set;}//集合导航属性publicList<Comment>Comments{get;set;}//集合导航属性}......
  • 使用 Visual Studio 调试 .NET 和 ASP.NET Core 源代码 | 学习地址
    使用VisualStudio调试.NET和ASP.NETCore源代码|MicrosoftLearn新建自签名证书|Microsoft学习AuthenticationHttpContextExtensions.ChallengeAsync方法(Microsoft.AspNetCore.Authentication)|MicrosoftLearn.netcore地址:  ASP.NETCore入门|Microsoft......
  • 安全机密管理:Asp.Net Core中的本地敏感数据保护技巧
    前言在我们开发过程中基本上不可或缺的用到一些敏感机密数据,比如SQL服务器的连接串或者是OAuth2的Secret等,这些敏感数据在代码中是不太安全的,我们不应该在源代码中存储密码和其他的敏感数据,一种推荐的方式是通过Asp.NetCore的机密管理器。机密管理器在ASP.NETCore中,机密管......
  • MoUsoCoreWorker.exe 是 Windows 操作系统中的一个进程,它属于 Microsoft Update Stack
    MoUsoCoreWorker.exe是Windows操作系统中的一个进程,它属于MicrosoftUpdateStack的一部分,用于处理Windows更新和维护任务。具体来说,MoUsoCoreWorker.exe是WindowsUpdate的核心工作程序,负责检查、下载和安装操作系统和应用程序的更新。这个进程通常位于Windows......
  • [MDP.BlazorCore] 快速建立跨Web、App執行的BlazorApp專案
    團隊資源受限的時候,使用Blazor開發應用系統,只需開發一份程式碼及使用一種程式語言,就同時產出Web跟App應用系統。本篇文章,紀錄使用MDP.BlazorCore所提供的樣板,快速建立跨Web、App執行的BlazorApp專案。為自己留個紀錄,也希望能幫助到有需要的開發人員。.安裝指令:dotnetnewinstal......
  • JavaScript精粹:26个关键字深度解析,编写高质量代码的秘诀!
    JavaScript关键字是一种特殊的标识符,它们在语言中有固定的含义,不能用作变量名或函数名。这些关键字是JavaScript的基础,理解它们是掌握JavaScript的关键。今天,我们将一起探索JavaScript中的26个关键字,了解这些关键字各自独特的含义、特性和使用方法。一、JavaScript关键字是什么......
  • ELF文件格式解析器 原理 + 代码
    参考:https://bbs.kanxue.com/thread-259901.htm写在前面:   读《Linux二进制》,发现作者对ELF文件格式部分并没有做详细介绍,为了加深对elf文件格式理解,我自己着手写了个解析器,会和readelf工具协同对比。 原理:  ELF文件(目标文件)格式主要三种:1.可重定向文件(Re......
  • RocketMQ 之 IoT 消息解析:物联网需要什么样的消息技术?
    前言:从初代开源消息队列崛起,到PC互联网、移动互联网爆发式发展,再到如今IoT、云计算、云原生引领了新的技术趋势,消息中间件的发展已经走过了30多个年头。目前,消息中间件在国内许多行业的关键应用中扮演着至关重要的角色。随着数字化转型的深入,客户在使用消息技术的过程中往......
  • python XML 文件解析
    XML文件认识<axmlns:ns="xxx"attr1="33"><ns:b>1<c>2<d/>3</c></ns:b>4</a>xml每个节点可以分为tag:a,ns:b,c,d都是tagtext:1,2是texttail:3,4是tail.3是属于d的tail,4是ns:b的tailattrib......