总结:别再背锅了!这个小技巧统计第三方接口耗时很安逸
优采云 发布时间: 2022-12-20 15:47总结:别再背锅了!这个小技巧统计第三方接口耗时很安逸
在前言之前,我写了文章记录生产环境事故的文章,得到了很多好评。
后续我们团队进行了一些讨论。 为了支持运维,我们搭建了一个更好的日志平台Granfa+Loki,同时也引入了SkyWalking进行链路追踪。
但是我在这个过程中也遇到了一些问题,我会在下面描述,然后分享这个简单的技巧,希望能帮助到大家。
如果暂时没时间看,可以先采集起来,有空再慢慢看。 如果以后遇到类似的情况,或许可以直接复制。
困难前面说到,我们团队搭建了日志平台和链接跟踪,但实际上也带来了一些困难,大致有以下几点:
1)对于中小企业来说,建立这样的平台需要一定的资源(金钱),而在项目维护期间经常会出现资源短缺的情况,增加了维护成本,因为成本不是你能控制的。 在老板手里;
2)对于团队成员来说,必须能够熟悉并使用这样的平台,掌握一些常用的命令。 然而,中小企业的人员流动相当频繁,并不是每个入职的成员都能上手,无形中增加了人力成本;
3)在线排查问题的过程中,方便了很多,但也麻烦了很多。 方便是因为有平台可以直接定位。 麻烦是因为平台越来越多,有些会员因为地址太多而头晕(笑))。
综上所述,考虑到我们公司的规模和经济能力,我们团队最终决定用最简单的方法来定位接口耗时问题,即Spring AOP做一个第三方接口的aspect来完成耗时统计。
效果先展示最终的在线效果,让大家一目了然。
我们的项目使用微服务+K8s。 下图是Granfa+Loki搭建的采集k8s日志的平台。 通过关键字搜索可以直接定位到调用第三方接口耗时的情况。
20.jpg
模拟场景 下面模拟一下场景,实现AOP方面第三方接口的耗时统计。 1.模拟用户画像建立
实体类
11.jpg
使用map模拟存储用户、获取用户、删除用户。
12.jpg
2.这里模拟第三方接口就是简单的用thread sleep来模拟调用第三方接口的耗时,假装几个接口分别耗了那么多时间。
13.jpg
3.服务服务
14.jpg
4.控制器服务
15.jpg
5.测试接口
界面1.jpg
界面2.jpg
界面3.jpg
好的,没问题。
6.AOP切面引入依赖
16.jpg
写一个section class,这里简单说明一下,主要是澄清几点。
1)Pointcut切面应该指向第三方接口调用的类,即本场景中的RemoteClient;
2)使用环绕部分,其中方法名是在线检索日志定位的关键字;
3)可以直接使用StopWatch进行计时,以免引入其他依赖;
4)、StopWatch的start和stop方法包裹的jointPoint.proceed()是第三方接口的执行操作,让StopWatch可以统计这个方法的耗时;
5)最后打印log也很重要。 你可以参考我打印出类名。 方法 () 供以后检索。 同时耗时最好用ms为单位,这样一目了然。
17.jpg
七、效果我们在模拟场景中手动执行几个接口后,观察日志打印情况。
可以看到方法对应的耗时已经统计了。
18.jpg
这样最终的k8s日志就会这样被日志平台采集起来,我们最终只需要通过关键词检索就可以一次定位到所有第三方接口的耗时情况。
最后给大家展示一下我们生产环境中第三方接口的超时日志。 正是这样的统计,帮助我们定位了其他厂商的接口问题。 以前,他们总是谈论我们的问题。 这张截图让他们低头认罪,然后他们就解决了这个问题。
这是在Granfa中直接根据类名和方法名定位第三方接口的命令
19.jpg
这是他们接口超时一段时间后的统计,也是最后发给他们的证据。
例子.png
总结 最后再总结一下这种方法的好处,和我公司有类似情况的同事可以参考一下。
1)节省维护成本,不需要额外搭建中间件或基础设施进行链路跟踪等定位。 许多中小企业不使用它。 一般用于通过日志定位问题。 一个链接跟踪平台搭建简单,但是我们明显发现在使用过程中会造成资源限制,必须定期维护。 这笔费用会随着时间的推移逐渐增加;
2)团队成员不需要学习额外的技能,尤其是在这个快节奏的互联网行业团队中,人员变动频繁,每次培训和指导是一项劳动强度大的工作,而且往往一个人就能掌握没过多久,他又跳槽了,公司也该从头再来了;
3)平台变复杂可不是什么好事。 光是环境地址就可以积累几个Excel。 小团队还是倾向于用最简单的方式来处理问题。 综合考虑,人力完全可以替代平台(老板其实就是喜欢这种员工)。
另外再说一点,这种方法既可以应用于单体架构,也可以应用于分布式架构,但是要注意分布式架构,第三方服务应该是独立的,这样才能完美的使用AOP方面。 已配置,否则需要重新导入各个服务。
PS源码会在评论区分享。 有兴趣的可以自己下载试试。 还有我整理的logback配置,彩色日志的配置,还有每一个配置的详细注释,AOP部分的代码是网上跑了大半年的代码,可以用直接地。 您只需要修改类名和方法名的切面指向和日志打印即可。
原创文章纯手打,一个一个敲出来,键盘满血,如果觉得有帮助,请点赞采集~
我致力于分享我的工作经验和有趣的故事。 喜欢的话可以在首页关注哦~
详细数据:查看竞争对手流量的数据分析工具 SimilarWeb
偶然在Google AdSense官方微信群里看到有人要购买SimilarWeb Pro的授权。 于是,随便搜了一下,发现SimilarWeb的功能真是不得了。
我安装了 SimilarWeb 的 chrome 扩展,当然还有 firefox 版本。
SimilarWeb可以查看一个网站(域名)对应的统计数据,主要包括
我看了一下这个博客的流量统计,大部分都是靠谱的。 当然,流量预测数据不是很准确。
SimilarWeb 的价值是什么
当然,分析竞争对手的流量统计。 比如交通通道,交通的大概规模。 可以相应地调整策略。
SimilarWeb的数据源是什么
猜测是购买了浏览器、搜索引擎和广告网络数据。