爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      基于Ko-time的Springboot单体化调用链追踪实践

      首页 知识中心 云端实践 文章详情页

      基于Ko-time的Springboot单体化调用链追踪实践

      2024-12-02 09:46:44 阅读次数:23

      链路

      前言

              熟悉微服务的老司机一定了解,在微服务模式下,在一次调用链路中,可能设计到多个微服务,如果在线上,某个微服务出现故障,如何快速定位故障所在额微服务呢?解决思路是可以使用链路追踪技。通常在链路追踪领域有以下的一些备选技术,比如可以用由大众点评开源,基于Java开发的实时应用监控平台Cat,包括实时应用监控,业务监控 。集成 方案是通过代码埋点的方式来实现监控,比如: 拦截器,过滤器等。 对代码的侵入性很大,集成成本较高。风险较大。也可以采用韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具Pinpoint。它的特点是支持多种插件,UI功能强大,接入端无代码侵入。 还可以采用本土开源的基于字节码注入的调用链分析以及应用监控分析工具SkyWalking。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器--开源。

              上述场景是解决微服务的链路追踪的,那么一般采用单体化架构的开发模式时,在小场景下,您是如何定位代码的性能,在出现问题时,是通过log+调用起始时间进行分段汇总吗?这样费时又费力,主要还不直观。那么怎么在Springboot架构下进行单体开发时,快速集成单体化模式下的链路追踪呢?本文介绍一款开源的基于Java开发的监控组件,同时详细讲解如何在你的项目中进行深度集成,最后给出详细的实现案例。不仅方便进行调用链路追踪,还自带可视化UI,甚至有报警配置,喜欢的朋友可以前来看看。

      一、关于Ko-Time

      1、是什么?

              koTime是一个轻量级的springboot项目性能分析工具,通过追踪方法调用链路以及对应的运行时长快速定位性能瓶颈,ko-time gitee地址。

      • ✅ 实时监听方法,统计运行时长
      • ✅ web展示方法调用链路,瓶颈可视化追踪
      • ✅ 追踪系统异常,精确定位到方法
      • ✅ 接口超时邮件通知,无需实时查看
      • ✅ 线上热更新:无需重启更新代码
      • ✅ 线程管理:线程实时统计与状态查看
      • ✅ 使用简单,无技术学习成本
      • ✅ pom依赖即可,无代码侵入,无多余部署成本

      基于Ko-time的Springboot单体化调用链追踪实践

       2、ko-time更新时间线

      基于Ko-time的Springboot单体化调用链追踪实践

      二、Ko-time怎么用?

      1、依赖引入

      <dependency>
          <groupId>cn.langpy</groupId>
          <artifactId>ko-time</artifactId>
          <version>2.4.1</version>
        </dependency>
        <!--阿里云maven仓库更新会慢一两天左右,拉取失败的切换到maven中央仓库-->

      2、配置集成

              本次代码集成以ruoyi单体化架构集成为例,ruoyi的配置文件主要配置在yml中,需要进行一定的配置才能运行。官网提供的是基于properties的配置模式,下面提供yml的配置转换,具体代码如下:

      ko-time: 
        # 是否开启koTime,默认开启,当为false时,关闭koTime 
        enable: true
        # 是否开启控制输出,默认false
        log-enable: false    
        # 语言(english/chinese)默认chinese
        language: chinese  
        # 时间阈值,用于前端展示,大于阈值显示红色,小于阈值显示绿色,默认800
        threshold: 800.0   
        # context-path: http://localhost:80 # 前端页面调用接口的上下文环境,无法自动获取时可手动配置,一般情况切记不要配置   v2.0.1开始支持  
        exception-enable: true # 是否开启异常检测,默认为false,开启后会对方法内部抛出的异常进行统计 v2.0.0开始支持  
        # 是否开启认证,默认为false,开启后需要登录才能访问调用链路 v2.0.2开始支持
        auth-enable: false   
        # 登录用户 v2.0.2开始支持
        #user-name: admin   
        # 登录密码 v2.0.2开始支持 
        #password: 123456  
        # 使用静态的token值进行认证访问(/koTime?kotoken=xxx) v2.3.7开始支持,该模式和user-name认证模式二选一 
        #static-token: xxxx 
        # 是否开启入参组合分析 默认开启 v2.0.8开始支持 双击方法节点即可看到效果
        param-analyse: true  
        # 启动时是否删除过往数据 默认false v2.2.3开始支持
        data-reset: false 
        # 调用信息存储线程数(为了不影响项目本身性能,链路存储异步进行),默认2,该值并非越大越好,瓶颈取决于数据库性能和服务器配置,尽可能少占用项目资源为上  v2.2.0-BETA开始支持
        thread-num: 2 
        # 丢弃率(0-1) 同一个方法在多次连续调用时,耗时差距并不大,为了存储的IO性能考虑,可以随机丢弃一部分耗时数据。默认30% v2.2.5开始支持
        discard-rate: 0.3 
        # 登录超时时间考虑 默认43200s(12个小时) v2.3.0开始支持
        auth-expire: 43200 
        # 获取最新版本通知开关 在页面上可以看到 默认true v2.3.3开始支持
        version-notice: true 
        #需要监测的范围,是链路包含的范围,不仅仅是接口层,参考aop的@pointcut
        pointcut: execution(public * com.ruoyi.project..*.*(..))

              请注意,以上部分参数的值请根据具体的代码进行修改,请不要直接复制,以免造成必须要的误解。比如,在这里ko-time的web-ui访问页面的访问权限我已经设置关闭,实际项目中一定要打开,并且设置一个用户名和密码。在这里可以配置代码的时间阈值,这里采用默认值,单位是毫秒。最后需要注意的是,由于这种单体化切入的模式都是采用AOP模式,因此必须要设置合理的切入点。见配置文件中的pointcut参数配置,这里我选择监控的是com.ruoyi.project下的任意方法。

      关于切入配置参考如下:

      假设项目的包路径为:

      com.huoyo.demo
              |-controller
              |-service
              |-mapper
              |-others
                  |-other1
                  |-other2
                  |-Test.java

        想要切cn.langpy.demo下面的所有方法(包括子包中的),可以写:

      execution(public * com.huoyo.demo..*.*(..)) #切记,是两个点.

      只想要切cn.langpy.demo.controller下面的类的所有方法(不包括子包的),可以写:

      execution(public * com.huoyo.demo.controller.*.*(..)) #切记,是一个点.

      只想要切cn.langpy.demo.others下面的类的所有方法(不包括other1和other2下面的),可以写:

      execution(public * com.huoyo.demo.others.*.*(..))

      只想要切cn.langpy.demo.others下面的类的所有方法(包括other1和other2),可以写:

      execution(public * com.huoyo.demo.others..*.*(..))

      如果想排除某些类如Test.class,可以

      execution(public * com.huoyo.demo.others..*.*(..)) && !execution(public * com.huoyo.demo.others.Test(..))

      3、权限放行

              由于系统配置的权限,因此要在后台系统中将ko-time的访问权限放开。在ShiroConfig中进行配置。

      //设置/koTime允许匿名访问
      filterChainDefinitionMap.put("/koTime/**","anon");
      filterChainDefinitionMap.put("/koTime", "anon");

      三、链路追踪 

      1、系统运行

              不管是微服务的链路追踪或者单体化链路追踪,其原理都是需要进行服务和接口的调用,所以我们模拟进行服务访问。点击登录和进行一些方法的操作。

      基于Ko-time的Springboot单体化调用链追踪实践

       2、链路追踪

              在进行了页面访问之后,在浏览器中输入http://ip:port/koTime就可以访问到链路追踪的web界面。这里就详细的列出了调用信息,比如接口总数,列表,异常列表,线程列表。

      基于Ko-time的Springboot单体化调用链追踪实践

      基于Ko-time的Springboot单体化调用链追踪实践

      基于Ko-time的Springboot单体化调用链追踪实践

       3、长时间调用模拟

      为了模拟实际的访问慢的接口,我们在代码中进行了休眠设置(线上代码不建议如此)。

      /**
           * 修改子元素关系
           * 
           * @param deptId 被修改的部门ID
           * @param newAncestors 新的父ID集合
           * @param oldAncestors 旧的父ID集合
           */
          public void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors)
          {
          	try {
      	    	for(int i =0;i<5;i++) {
      				Thread.sleep(200);
      	    	}
          	} catch (InterruptedException e) {
      		}
              List<Dept> children = deptMapper.selectChildrenDeptById(deptId);
              for (Dept child : children)
              {
                  child.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors));
              }
              if (children.size() > 0)
              {
                  deptMapper.updateDeptChildren(children);
              }
          }

      基于Ko-time的Springboot单体化调用链追踪实践

      基于Ko-time的Springboot单体化调用链追踪实践

       总结

              以上就是本文的主要内容,本文介绍一款开源的基于Java开发的监控组件,同时详细讲解如何在你的项目中进行深度集成,最后给出详细的实现案例。不仅方便进行调用链路追踪,还自带可视化UI,甚至有报警配置,喜欢的朋友可以前来看看。

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/yelangking/11157739,作者:夜郎king,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:Spring Boot中的日志管理最佳实践

      下一篇:基于SpringBoot和Leaflet的全国省会城市风景区分布分析实践

      相关文章

      2024-12-03 08:56:33

      在Spring Boot项目中集成分布式追踪系统

      在复杂的分布式系统中,定位和解决问题是一项挑战。分布式追踪系统通过跟踪请求的调用链,帮助开发者分析和优化系统性能,确保各个服务之间的协调与合作。

      2024-12-03 08:56:33
      Spring , 分布式
      2024-11-27 03:28:07

      Java后端微服务架构下的服务调用链路追踪:Spring Cloud Sleuth与Zipkin

      在微服务架构中,服务之间的调用关系错综复杂,当系统出现问题时,追踪服务调用链路变得非常困难。Spring Cloud Sleuth与Zipkin提供了一套强大的服务调用链路追踪解决方案,帮助开发者快速定位问题。

      2024-11-27 03:28:07
      Cloud , Spring
      2024-10-22 07:47:36

      一篇文章让你明白STP生成树协议

      一篇文章让你明白STP生成树协议

      2024-10-22 07:47:36
      端口 , 链路
      2024-10-22 06:56:19

      Iptables连接追踪state

      Iptables连接追踪state

      2024-10-22 06:56:19
      Iptables , 连接
      2024-04-18 09:07:17

      Arthas-trace

      Arthas-trace

      2024-04-18 09:07:17
      Arthas , 链路
      2024-03-18 09:13:22

      java字节码编程技术(5/10)-应用

      java字节码编程技术(5/10)-应用

      2024-03-18 09:13:22
      java , 链路
      2023-06-25 07:13:26

      OSPF(1)

      定义ospf(open shortest  path  first)是开放式最短路径优先协议,是IETF(互联网任务工程小组)定义的一种基链路状态的内部网关路由协议。在这里重点理解两个名词,一个是链路状态,另一个是内部网关。所谓的链路状态的

      2023-06-25 07:13:26
      OSPF , 网关 , 链路
      2023-06-25 07:03:11

      双机热备

      目录1、双机热备基础概念2、链路聚合2.1 链路聚合的基本概念2.2 链路聚合产生的背景2.3 链路聚合适用的场景2.4 链路聚合的原理2.5 链路聚合的配置思路3、VRRP3.1 VRRP的工作过程3.2 VRRP的不足 1、双机热备基

      2023-06-25 07:03:11
      VRRP , 链路
      2023-06-20 09:13:20

      链路聚合(eth-trunk)

      定义作用模式二层聚合配置R1:查看R1配置结果:R2:查看捆绑结果及阻塞状态接口下运行状态聚合接口负载分担方式

      2023-06-20 09:13:20
      聚合 , 链路
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5242393

      查看更多

      热门标签

      客户端 实践 基础知识 Java 服务器 java 数据库 框架 python 服务端 学习 代码 简单 javascript 编程
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号