多 agent 治理在海拍客的应用与实践

摘要

Java Agent这个技术,对于大多数读者来说都比较陌生,但是多多少少又接触过,实际上,我们平时用的很多工具,都是基于Java Agent实现的,例如常见的热部署JRebel,各种线上诊断工具(btrace, greys),还有阿里开源的arthas。另外我们大伙熟知的apm性能监控工具skywalking,pinpoint等都是agent的实际运用.那我们要怎么简单理解他呢 ,如果熟悉spring的读者应该知道动态代理技术,相对于agent技术,大家可以理解成一种jvm级别的aop技术. 有了它,可以在类加载前后增加相应代码,实现我们要的特性.

随着agent场景的普及,我们公司也在很多方面要用到agent带来的功能. 本文重点举例介绍3个agent场景,也是我们公司大量使用的地方.首先是apm调用链,大家应该对这个比较熟悉,业务迁移到微服务之后,服务之间的调用关系势必要借助apm工具来进行追踪的.其次是测试团队使用的覆盖率测试工具jacoco,另一个场景是我们在进行beta发布,全链路压测等场景需要对流量进行识别和传递,那么标签传递的过程中,会遇到大量的异步场景,调用走到线程池以后,标签会出现传递丢失,那么在这种情况下,目前比较流行的解决方案是接入阿里开源的transmittable-thread-local框架. 以上三个场景apm,jacoco,transmittable-thread-local等 ,都是基于agent(或者推荐使用agent方式)方式接入的,针对这么多agent,甚至以后会出现更多的类似场景,我们要怎么管理,引入了过多的agent以后会不会引入过多的风险?

欢迎在评论区写下你对这篇文章的看法。

评论

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-05 16:31
浙ICP备14020137号-1 $Map of visitor$