摘要:
我使用asm库来执行一些Java字节码修改 - 特别是修改我的类来实现一个新的接口和相关的方法。我目前的做法是通过javaagent使用核心asm API。我想保留这种动态方法,而不是静态修改.class文件。 在更高层次上,我的问题是,如果我选择修改从B扩展的类A,我还需要修改B.(鉴于我对如何在 阅读全文
摘要:
1.前提概要 jvm的attach的方式上如何重新定义class,里面也提到了最后attach时候会调用我们自定义的agent class的agentmain方法,在Instrumentation的接口里面实际上本身提供了redfineClasses的方法 也就是agentmain的方法只是一个调用 阅读全文
摘要:
基于pinpoint改造的一种方式的思考(1)--agent 添加代理层 1.Pinpoint简介 Pinpoint 是用 Java 编写的 APM(应用性能管理)工具,用于大规模分布式系统。在 Dapper(dapper.docx) 之后,Pinpoint 提供了一个解决方案,以帮助分析系统的总体 阅读全文
摘要:
jaegeropentracing的Java-client完整分布式追踪链,在分布式系统中透传trace信息 下面是代码: client端代码如下: public static void main(String[] args) throws InterruptedException { Config 阅读全文
摘要:
关于jaegeropentracing的Java-client做记录如下: 1.依赖jar包 2.Java-client 代码示例: <A>.调用示例1 注:该方式client会侵入已有业务代码,如需在不改动原有业务代码的前提下,是否考虑可以使用拦截器/过滤器?(未验证) <B>.使用Spring 阅读全文
摘要:
请求转发 Spring Cloud Gateway 可以通过代码或者配置文件指定路由,我还是习惯在配置文件里面操作。这里简单配置将所有 /api/** 的请求都转发到 api-service 进行处理。 spring: cloud.gateway.routes: - id: api-service- 阅读全文
摘要:
随着微服务架构的流行,一次请求往往需要涉及到多个服务,因此服务性能监控和排查就变得更复杂。APM因此而生。 目前,市面上的APM服务端已经有了非常多的实现。比如Zipkin、Jaeger、SkyWalking、Elastic APM等(Pinpoint并不支持OpenTracing,所以我们不介绍) 阅读全文
摘要:
trace是分布在不同的应用中的,最常用的远程调用方式就是Http。 在这种情况下,我们通常通过增加额外的Http Header传递Trace信息,然后将其组织起来。 本部分通过构建一个目前最火的SpringBoot服务端,然后通过OkHttp3进行调用,来展示分布式调用链的组织方式。 需要的知识: 阅读全文
摘要:
主要用到了opentracing相关的jar包,而且用到了jaeger的java客户端实现。 一段简单的代码 首先创建一个简单的loveyou类,里面有一个简单的方法hello。本部分之与OpenTracing有关,与Jaeger关系并不是很大。在hello方法体的前后,加入几行简单的代码,主要是根 阅读全文
摘要:
一.Pinpoint是什么 简单的说,Pinpoint是一款对Java编写的大规模分布式系统的APM工具,有些人也喜欢称呼这类工具为调用链系统、分布式跟踪系统。我们知道,前端向后台发起一个查询请求,后台服务可能要调用多个服务,每个服务可能又会调用其它服务,最终将结果返回,汇总到页面上。如果某个环节发 阅读全文
摘要:
选型目的 随着公司业务的与日俱增,各个系统也越来越复杂,服务间的调用,服务的依赖,以及分析服务的性能问题也越棘手,因此引入服务追踪系统尤为重要。现有的服务追踪体系,基本都是参考Google的Dapper的体系来做的。通过跟踪请求的处理过程,来对应用系统在前后端处理、服务端调用的性能消耗进行跟踪(每个 阅读全文