UAVStack中的调用链是什么?
本文主要讲解“UAVStack中的调用链是什么”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖学会“UAVStack中的呼叫链是什么”!
服务器端信息收集的整体流程如下图所示。通过在应用程序容器的启动过程中嵌入一个切点(tomcat等。).),请求可以在应用程序逻辑执行前后被劫持。
在介绍切入点之前,我们应该对servlet容器处理请求的一般过程有一个全面的了解(本文以tomcat为例)。
连接器收到连接并转换成请求后,会将请求传递给发动机管路的阀门。该请求将被传输到发动机管路中的发动机气门。然后,请求从发动机气门传递到主机管道,在那里请求被传递到主机气门。然后,它从主阀传递到上下文的管道,在那里它被传递到上下文阀。接下来,请求将被传递到包装器C中管道中包含的阀门包装器阀门,在那里它将通过一个过滤器链,最后被发送到一个Servlet。借助tomcat的架构设计,我们可以通过将自己的逻辑,也就是无人机的中间件增强技术,植入到tomcat处理一个请求的生命周期中,来增强tomcat对外提供的能力。
中间件增强技术不仅巧妙地利用了tomcat容器的架构设计,还利用了java Instrumentation,它为我们在首次加载对象时提供了动态修改字节码的能力。因为篇幅关系,这里就不详细解释了。不懂的可以自行查阅资料)。在无人机中,通过无人机服务器从外部提供各种入口点功能。
有了中间件增强技术,应用逻辑执行前后都有切线,下一步就是在这些切线上执行我们自己的调用链逻辑。
上面介绍的中间件增强技术是一个框架,利用javaagent将切入点代码动态嵌入到tomcat代码中,并以UAVServer的形式提供功能(具体功能将在后面的文章中详细介绍)。轻调用链的实现恰恰是
在GlobalFilterHandler提供的前两个功能的帮助下,调用链实现了在应用程序处理请求之前和之后执行调用链逻辑的功能。
从UML图中可以清楚地看到,Invoke Chain Support(调用链实现调用链所需的逻辑入口和资源初始化实现类)对中间件增强技术进行了二次增强。它允许用户在其中注册不同的处理程序,并在处理程序的preCap和doCap(中间件增强技术中逻辑执行前后的切线项)方法前后动态编织适配器,以便能够执行更定制化的适配和个性化的逻辑。所有的支持者和适配器都采用反射调用方式,最大限度地减少了对中间件增强技术的依赖。
对于像tomcat这样的中间件容器,所有进入tomcat的请求都将被封装为Httpservletrequest和HttpServletresponse(以下简称请求和响应),最后进入用户的servlet。借助中间件增强技术,调用链将在用户逻辑处理之前拦截请求和响应一次,并分析它们是否包含调用链信息。如果是,封装调用链信息并将其放入上下文中。
如果没有父节点,则当前节点被视为初始化节点,记录当前服务中调用链信息的mainspan被初始化。
如果有父节点,则根据父节点的信息初始化当前节点,并初始化记录当前业务中呼叫链信息的主span。
主要跨度:服务内可能有多次客户端通信或服务间通信。需要一个主跨度来记录当前服务中呼叫链的最后一个节点的信息。
在用户逻辑处理之后,调用链记录器将从上下文中获取当前服务的调用链信息,并将其输出到指定的日志路径。
不同的协议调用链传递信息的方式略有不同,具体实现方式依赖于中间件增强技术提供的另一种能力:AppFrkHook(简称Hook),在实现客户端调用链时会详细介绍。它可以劫持用户使用的客户端技术。比如用户使用httpclient进行通信,就会劫持httpclient,动态编织代码,从而达到在http通信过程中注入调用链上下文信息的效果。当服务解析请求信息时,它解析调用链上下文;在初始化调用链上下文逻辑时,使用传递的信息初始化目标服务的调用链上下文,实现跨系统调用中的调用链连接。
至此,相信大家对“UAVStack中的调用链是什么”有了更深的理解,让我们在实践中去做吧!这是网站。更多相关内容,可以去相关渠道查询,关注我们,继续学习!
网友转载外烟请保留链接:本文链接UAVStack中的调用链是什么?,http://fiows.com/lunwenfenxiang/49682.html谢谢合作!
相关阅读:
iphone 11 pro max与iphone 12pro(2 max1) CES 2022-在Covid Surge、AMD和一加退学,加入微软、谷歌和英特尔。 iPhone 14谣言 – 发布日期,价格,SIM卡等(iphone14最新官方消息) 2022年最佳小手机