springmvc-调用链路

Springmvc 使用Zipkin 和 Brave 实现http服务调用链路日志跟踪 Zipkin 是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper 的论文设计而来,由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据,用来追踪微服务架构下的系统延时问题。 Brave 是用来装备 Java 程序的类库,提供了面向 Standard Servlet、Spring MVC、Htt... 阅读详情

根本链路

参考: click

会为该请求创建一个过滤器链,过滤器中的过滤器都执行完之后,才会调用Servlet的service方法,如果我们使用SpringMVC的话,最终调用的是DispatcherServlet的doDispatch方法,在该方法会根据当前请求路径、请求头、请求参数等信息确定执行处理器handler(也就是我们的Controller的类中配置了@RequestMapping注解的方法),此时返回的handler是HandlerExecutionChain处理器执行链,该执行链中含适用的拦截器以及具体处理的方法(@RequestMapping注解的方法),然后正向执行每个拦截器的preHandle方法,再通过该handler找到处理器适配器,使用处理器适配器执行具体的方法(@RequestMapping注解的方法),再反向执行每个拦截器的postHandle方法,最后反向执行每个拦截器的afterCompletion方法,最后的最后将返回结果通过Response将返回结果写回客户端。


// 调用Engine的Pipeline
connector.getService().getContainer().getPipeline().getFirst().invoke(request, response);
// StandardEngineValve调用Host的Pipeline
host.getPipeline().getFirst().invoke(request, response);
// StandardHostValve调用Context的Pipeline
context.getPipeline().getFirst().invoke(request, response);
// StandardContextValve调用Wrapper的Pipeline
wrapper.getPipeline().getFirst().invoke(request, response);
// StandardWrapperValve创建过滤器链并调用
filterChain.doFilter(request.getRequest(), response.getResponse());
// DispatcherServlet.service()
servlet.service(request, response);
// DispatcherServlet.doDispatch()
doDispatch(request, response);
// 执行拦截器链的preHandle()--正向执行
mappedHandler.applyPreHandle(processedRequest, response);
// 执行具体的handler,也就是@RequestMapping注解的方法
ha.handle(processedRequest, response, mappedHandler.getHandler());
// 执行拦截器链的postHandle()--反向执行
mappedHandler.applyPostHandle(processedRequest, response, mv);
// 执行拦截器链的afterCompletion()--反向执行
mappedHandler.triggerAfterCompletion(request, response, null);

1 ## ApplicationFilterChain
在这里插入图片描述

2 DispatcherServlet

在这里插入图片描述

matinal:SAP ABAP 关于sftp的发送接收源代码 如果您将目标系统的凭据存储在该 RFC 连接中,您可以安排程序并将其作为后台作业运行:凭据将从 SM59 配置中获取,并且在文件传输期间不会提示您输入它们。这尤其适用于安全问题:您有责任为您的编码添加安全功能,并相应地配置您的系统(例如,保护您的系统免受病毒侵害)。注意:在创建自己的程序时,请特别注意示例代码中以“@CUSTOMER”开头的注释,因为您需要实现自己的逻辑。本说明为您提供示例编码以支持您创建自己的程序。在 STRUST 事务中,您维护了一个 PSE 并导入了您要发送的文件的最终收件人的证书。 阅读详情

相关推荐

RuoYi(分离版) 使用代码生成器添加子模块(idea版)

文章目录准备一、使用代码生成器1.数据库2.导入表并生成代码二、导入代码文件1.新建一个模块2.导入zip代码文件3.模块环境配置添加菜单和访问地址总结 准备 前提要把系统启动起来,部分教程可以参考这边文章若依框架RuoYi前后端分离项目导入IDEA及运行启动 但是完全参考这篇文章还是不能把项目启动起来,因为这篇文章没有说明数据库。 我是用的是本地数据库,采用xampp+Navicat的组合来部署和访问数据库。打开Navicat,连接并创建数据库ry-vue并导入数据脚本ry_20191008.sql,q

dream_coke的博客 1万+

SpringMVC的配置、调用链、拦截器

工作流程 添加Jar包 配置前端控制器DispatcherServlet <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- .

qq_34922830的博客 403

铭飞MCMS源码部署

文章目录前言一、下载铭飞源码二、部署源码1.使用IDEA打开源码2.配置tomcat环境2.1下载tomcat并测试是否可以成功启动(此处不赘述)2.2在IDEA中安装tomcat环境并配置3.添加数据库,并配置3.1新建数据库3.2 导入sql配置三、启动测试 前言 铭飞MCMS基于IDEA、tomcat和mysql的环境搭建。 提示:以下是本篇文章正文内容,下面案例可供参考 一、下载铭飞源码 gitee:https://gitee.com/mingSoft/MCMS/releases(各种版本按需下

MARS_ZORO的博客 4061

Springmvc Filter过滤器执行链

模拟filter过程 import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; /** * @Author pzy * @Version 0.1.0 * 模拟过滤器方法演示 * <p> * 特殊的拦截器作用 */ interface Filter { boolean invoke(); } interface Servlet { void dispatch(); } .

pingzhuyan的博客 630

银河麒麟V10ARM架构服务器离线安装docker\nacos【附安装包】

本文分享了在银河麒麟ARM64操作系统上安装Docker和Nacos的完整过程。首先提供了Docker的自动化安装脚本,包含服务配置、存储路径设置等关键步骤,并给出了常用维护命令。接着详细介绍了通过Docker-compose部署Nacos的方法,包括镜像导入、配置文件修改、鉴权设置等注意事项,特别强调了密钥长度必须超过32个字符的要求。文章还提供了Nacos初次登录的注意事项,并预告了后续可能推出的Redis、Nginx等安装教程。所有配置文件和脚本均可直接下载使用,适合内网环境下国产操作系统的部署

weixin_39054697的博客 2342

音频——DAC 性能测试

codec DAC 性能测试方法

tyustli 2234

在医院五天,我把「链路追踪」整明白了

Python实战社群Java实战社群长按识别下方二维码,按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲作者 | 悟空聊架构来源 |悟空聊架构(ID:Pa...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 643

海康威视 2024届 数字逻辑设计 实习笔试分析

记录一下 5月11日晚,做的海康威视的一场笔试。分享给需要的IC人。 岗位:数字逻辑设计工程师(浙江 杭州) 转载需要本人同意! 我的见解不一定都是准确的,欢迎评论区交流指正~~

记录所学,分享知识,结识挚友 1万+

【Java】基于SpringBoot动态调用Service中的方法

项目需求中,涉及到在aop中监听一系列方法,然后动态调用不同的Service中的方法。计划将动态调用Service封装方法提取为共用方法,以传参形式,控制入参实现动态调用,避免业务代码冗余。

qq_41306795的博客 6428

YOLOv11改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv11的模型配置文件在中,里面包含以及,本文以目标检测模型文件为例(其他文件完全一致),详细介绍一下YOLOv11模型文件中各参数的含义。

Limiiiing的博客 5308

【GameFramework框架内置模块】10、本地化(Localization)

本地化(Localization),也就是我们所说的不同地区的语言适配,比如说中文版“你好”,英文版是“Hello”。GameFramework在本地化方面,不仅支持文本的本地化,还支持任意资源的本地化,比如说游戏中释放烟花的特效也可以做出不同地区的版本,使得中文版烟花里面的“新年好”字样的特效,在英文版里面是“Happy New Year”字样的特效。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2298

SpringMVC系列-2 HTTP请求调用链

本文作为第二篇,介绍HTTP请求的调用链:从请求进入Tomcat到数据流返回客户端的完整过程。为了尽可能把流程表达清楚,进行了很多减支处理,只关注主线逻辑。本文也作为SpringMVC系列后续文章的基础,在调用链梳理清楚的基础上,后文对重要逻辑分别进行展开介绍,如拦截器、异常处理器、转换器、消息转换器、异步请求、文件上传等。在这些文章完成后,会出一个专题,包括:结果集框架、错误码框架、鉴权逻辑、分页查询、事件框架等,基于此会对Spring系列和SpringMVC系列文章有更深层次的理解。

shengyu 3629

【SystemVerilog基础】SystemVerilog Assertion 概述

断言主要是描述复杂的设计行为;是传统验证方法学一个很好的补充,可以检查到电路内部细节,相当于一种白盒验证,传统的验证方法学是纯粹的黑盒验证!property跟上面的sequence差别不大,唯一有差别可能多了两个implication(|->,|=>)注意,当有前置条件时,不满足前置条件不会fail,而是伪真!上面这个因为没有前置条件,每个周期都会去检查!注意:当没有前置条件时,不满足条件会直接fail!

MoorePlus的博客 331

SpringMvc源码深度解析-从启动到接口调用的整个链路深度解析

Spring+外置Tomcat / SpringBoot+内置Tomcat 从启动到接口请求的详细全流程

weixin_39072857的博客 396

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

一文详解蚂蚁金服分布式链路组件 SOFATracer 的埋点机制

原文链接 一文详解蚂蚁金服分布式链路组件 SOFATracer 的埋点机制 SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 TraceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的,这些链路数据可用于故障的快速发现,服务治理等。 GITHUB 地址:https://github.com/sofastack/sofa-tracer...

glmapper_2018 234

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

调用链系列三、基于zipkin调用链封装starter实现springmvc、dubbo、restTemplate等实现全链路跟踪...

一、实现思路 1、过滤器实现思路 所有调用链数据都通过过滤器实现埋点并收集、同一条链共享一个traceId、每个节点有唯一的spanId。 2、共享传递方式 1、rpc调用:通过隐式传参、dubbo有提供spi在rpc调用之前塞到请求中。参考:dubbo系列六、SPI扩展Filter隐式传参 2、http调用:通过servlet过滤器、在请求前放入requestHead中传递、resTe...

weixin_30467087的博客 530

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SpringMVC页面访问流程(源码解析)

SpringMVC有五大核心组件, DispatcherServlet, HandlerMapping, Controller, ModelAndView, ViewResolver; 其中以DispatcherServlet最为核心, 以下简称ds, 类似电脑cpu. 当容器接收到请求后, 会先到xml中找到对应servlet, 本质就是ds, 然后ds父类的service方法进行处理, 最后进...

跟心爱的人一起浪迹天涯 365

sentinel--基础--4.1--限流规则--簇点链路

簇点链路就是项目内的调用链路,链路中被监控的每个接口就是一个资源。默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此SpringMVC的每一个端点(Endpoint)就是调用链路中的一个资源。簇点链路 就是springMVC controller层中注解标识的方法。对某个资源进行流量管控这里是限制这个资源的单机QPS设置为1,即每秒只允许1次请求,超出的请求会被拦截并报错。

zhou920786312的博客 708

Reactor异步化

异步化并不是高并发的银弹,但是有了异步化的确能提高你机器的qps,吞吐量等等。上述讲的一些模型如果能合理的做一些优化,然后进行应用,相信能对你的服务有很大的帮助的。

qq_32907491的博客 734

[4-08-45].第45节:组件应用 - Sentinel 簇点链路

1.当请求进入微服务时,首先会访问DispatcherServlet,然后进入Controller、Service、Mapper,这样的一个调用链就叫做簇点链路2.簇点链路中被监控的每一个接口就是一个资源3.默认情况下Sentinel会监控SpringMVC的每一个端点(Endpoint,也就是controller中的方法4.流控、熔断等都是针对簇点链路中的资源来设置的,因此我们可以点击对应资源后面的按钮来设置规则:流控:流量控制降级:降级熔断热点:热点参数限流,是限流的一种。

F-T-er 575

skywalking源码分析第十八篇一agent端Trace三部曲一Span栈桢机制

文章目录原理图栈机制解说总结 原理图 栈机制解说 总结

小麒麟的博客 856

SpringMVC源码-异常处理机制

springmvc源码层面讲解出现异常之后HandlerExceptionResolver异常解析器如何进行处理,多个异常解析器如何选择

qq_37200262的博客 383

SpringMVC-RequestMappingHandlerAdapter

本文分析了SpringMVC框架中RequestMappingHandlerAdapter的工作原理,主要包括三个核心功能:参数解析、执行处理逻辑和返回值处理。在参数解析阶段,通过HandlerMethodArgumentResolver解析@RequestParam、@PathVariable和@RequestBody等注解修饰的参数;执行阶段通过反射方式调用handler方法;返回值处理阶段则使用HandlerMethodReturnValueHandler处理不同类型的返回值,包括ResponseEn

384

SpringMVC源码-处理器适配器HandlerAdapter

HandlerAdapter是在初始化9大内置组件生成默认的,RequestMappingHandlerAdapter因为实现了InitializingBean接口,所以在afterPropertiesSet方法中给一些属性赋值

qq_37200262的博客 765

SpringMVC执行流程源码分析之二

null?= null?traceOn);});Class<?throw ex;if (body!if (body!break;break;

weixin_44877172的博客 278

SpringMVC源码-AbstractHandlerMethodMapping处理器映射器将@Controller修饰类方法存储到处理器映射器

SpringMVC九大内置组件之HandlerMapping处理器映射器-AbstractHandlerMethodMapping类以及子类RequestMappingHandlerMapping如何将@Controller修饰的注解类以及类下被注解RequestMapping修饰的方法存储到处理器映射器中。

qq_37200262的博客 1274
上一篇: redisson
下一篇: 日志-坑-keng-rz-rizhi-log
吧啦蹦吧
博客等级 码龄10年 52粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值