快捷搜索:

深入分析ClassLoader加载机制,去哪儿系统高可用之

作者: 365bet亚洲版官网  发布:2019-11-15
  • 静态编织:静态编织发生在字节码生成时依照早晚框架的规行矩步提前将AOP字节码插入到指标类和方法中;
  • 动态编织:在JVM运维期对钦点的主意成功AOP字节码巩固。司空见惯的秘籍大比超级多采用重命名原有艺术,再新建一个同名方法做代办的行事情势来完结。

近日安排

成效迭代:

  • 加强 JVM 练习场景,帮助越多的 Java 主流框架,如 Redis,GRPC
  • 增加 Kubernetes 演练场景
  • 追加对 C++、Node.js 等利用的支撑
(2)Linking:验证与分析,包蕴3步:
  • <1>字节码验证

  • <2>类希图:计划代表各种类中定义的字段、方法和得以完结接口所需的数据结构

  • <3>分析:那个等级类装入器转入类所选用的其它类

最近AOP的落到实处有两种方法:

ChaosBlade 的演进史

EOS(2012-2015):故障练习平台的早先时期版本,故障注入技术通过字节码巩固形式落成,模拟家常便饭的 RPC 故障,化解微服务的强弱信赖治理难题。

MonkeyKing(2016-2018):故障演习平台的晋级版本,丰裕了故障场景(如:能源、容器层场景卡塔尔,开端在生育遭遇实行部分规模化的排演。

AHAS(2018.9-至今):Ali云应用高可用服务,内置演练平台的方方面面功能,帮助可编制演习、练习插件扩充等力量,并结成了架构感知和限流降级的作用。

ChaosBlade:是 MonkeyKing 平台底层故障注入的得以达成工具,通过对练习平台底层的故障注入技能实行抽象,定义了生机勃勃套故障模型。合作顾客自个儿的 CLI 工具举办开源,帮忙云原生客商举办混沌工程测量试验。

图片 1

(3)上级委托机制:当八个加载器加载类字时,先委托其父加载器加载,若加载成功则反映给该加载器,若父加载器不能够加载,则由该加载器加载

再者超轻松拼接出错何况难以调节和测量试验,只可以把调换的类输出为文件,查看自个儿写的字节码编写翻译成class文件是或不是科学,几乎太难过了!

Ali妹导读:减去故障的最佳点子正是让故障平日性的发生。通过不停重复失利进度,持续晋级系统的容错和弹性工夫。今天,阿里Baba(Alibaba卡塔尔国把两年来在故障练习领域的创新意识和履行汇浓缩而成的工具进行开源,它正是“ChaosBlade”。若是您想要提高开垦功能,无妨来打听一下。

(1)AppClassLoader:

加载jvm的classpath中的类和tomcat的宗旨类

步骤四、注入故障。

ChaosBlade 是什么?

ChaosBlade 是意气风发款据守混沌工程实践原理,提供丰富故障场景实现,协助布满式系统升高容错性和可苏醒性的无知工程工具,可完结底层故障的注入,特点是操作简单、无侵入、扩大性强。

ChaosBlade 基于 Apache License v2.0 开源合同,近来有 chaosblade 和 chaosblade-exe-jvm 七个宾馆。

chaosblade 包涵 CLI 和选用 Golang 达成的底工能源、容器相关的无知实验实施推行模块。chaosblade-exe-jvm 是对运作在 JVM 上的应用施行混沌实验的实行器。

ChaosBlade 社区持续还或许会增多 C++、Node.js 等其余语言的愚钝实验推行器。

图片 2

(1)重要由多个方式,分别是defineClass,findClass,loadClass,resolveClass
  • <1>defineClass(byte[] , int ,int) 将byte字节流剖判为JVM能够辨识的Class对象(直接调用那么些方法生成的Class对象还未resolve,那几个resolve将会在这几个指标真正实例化时resolve卡塔尔国

  • <2>findClass,通过类名去加载对应的Class对象。当大家贯彻自定义的classLoader日常是重写这一个法子,依照传入的类名找到对应字节码的文本,并透过调用defineClass剖析出Class独享

  • <3>loadClass运转时方可由此调用此情势加载三个类(由于类是动态加载进jvm,用有个别加载多少的?卡塔尔国

  • <4>resolveClass手动调用这些使得被加到JVM的类被链接(分析resolve这么些类?卡塔尔

反驳上的话,当图中具备的事务都做完,大家就能够以为系统是贰个真正的高可用系统。但正是如此吗?

阿里Baba(Alibaba卡塔尔在海量互连网服务甚至每一年双11气象的执行进度中,沉淀出了满含全链路压测、线上流量管理调整、故障练习等高可用核心技能,并通过开源和云上劳动的花样对外出口,以帮扶公司客商和开辟者享受Alibaba的本事红利,提升开销作用,裁减专门的事业的营造流程。

Classloader担当将Class加载到JVM中,况且分明由非常ClassLoader来加载(父优先的品级加运载飞机制卡塔尔国。还应该有叁个任务便是将Class字节码重新讲授为JVM统生机勃勃须要的格式

四、如何利用

社区共同建设:

招待待上访谈 ChaosBlade@GitHub,出席社区一起建设,富含但不压迫:

  • 架构划设想计
  • 模块设计
  • 代码实现
  • Bug Fix
  • Demo样例
  • 文书档案、网址和翻译

本文小编:中亭

翻阅原来的文章

正文来源云栖社区合营同伴“ Ali工夫”,如需转发请联系原文者。

(3)UnsatisfiedLinkErrpr:

如native的办法找不到本机的lib

dbaplus社会群众体育款待广大技巧职员投稿,投稿邮箱:editor@dbaplus.cn回去搜狐,查看越多

ChaosBlade 能一举成功哪些难题?

衡量微服务的容错本领

通过模拟调用延迟、服务不可用、机器财富满载等,查看产生故障的节点或实例是还是不是被活动隔断、下线,流量调节是不是准确,预案是不是管用,同不平日候旁观系统总体的 QPS 或 RT 是不是受影响。在那根基上能够缓慢扩大故障节点范围,验证上游服务限流降级、熔断等是还是不是管用。最后故障节点增加到须求服务超时,预计系统容错红线,衡量系统容错工夫。

表明容器编排配置是还是不是站得住

经过模拟杀服务 Pod、杀节点、增大 Pod 资源负载,观看系统服务可用性,验证副本配置、能源限定配置以致 Pod 下安顿的容器是或不是合理。

测验 PaaS 层是不是健康

通过模拟上层财富负载,验证调治种类的实惠;模拟重视的分布式存储不可用,验证系统的容错技能;模拟调解节点不可用,测量试验调治职责是不是自动员搬迁移到可用节点;模拟主备节点故障,测验主备切换是还是不是健康。

注解监察和控制告急的时间效果与利益性

通过对系统注入故障,验香港证肆期货(Futures卡塔 尔(阿拉伯语:قطر‎交易监督委员会察和控制目的是不是确切,监察和控制维度是不是周到,告急阈值是不是合理,告急是还是不是急忙,告警选用人是不是科学,公告渠道是或不是可用等,进步监督检查告急的标准和时间效益性。

原则性与消除难题的救急力量

通过故障突袭,随机对系统注入故障,考察相关人口对标题标救急技巧,以致难题举报、管理流程是或不是创设,到达继续进行战争,锻练人牢固与解决难题的力量。

1.Classloader类结构深入分析

五花八门的难题,在此种复杂的依靠结构下被放大,二个依附二16个SOA服务的种类,每种服务99.99%可用。99.99%的三十一次方≈99.7%。0.3%表示后生可畏亿次号召会有3,000,00次停业,换算成时间差不多每月有2个时辰服务不平稳。随着服务信任数量的变多,服务不安定的可能率会呈指数性升高,那么些标题末了都会转接为故障展现出来。

为啥要开源?

繁多公司现已上马关注并探寻混沌工程,稳步产生测量检验系统高可用,创设对系统消息不可缺点和失误的工具。但混沌工程领域近日还处于三个便捷造成的级差,最好实行和工具框架未有统风流倜傥标准。实行混沌工程可能会推动一些神秘的业务危害,经历和工具的缺点和失误也将从而阻止 DevOps 人士举办混沌工程。

混沌工程领域如今也是有成都百货上千理想的开源工具,分别覆盖有个别圈子,但这一个工具的运用形式差别,在那之中多少工具上手难度大,学习成本高,混沌实验技巧单后生可畏,使广大人对混沌工程领域半途而回。

阿里Baba(Alibaba卡塔 尔(英语:State of Qatar)公司在混沌工程领域已经进行多年,将混沌实验工具 ChaosBlade 开源指标,我们期望:

  • 让更多少人精通并参加到混沌工程领域;
  • 缩水创设混沌工程的门道;
  • 还要依靠社区的力量,完备越来越多的无知实验现象,协同拉动混沌工程领域的腾飞。
(2)加载自定义路线中的class文件
  • <1>加载特定来源的少数类:重写find方法,使特定类或许特定来源的字节码 通过defineClass得到class类并赶回(应该适合jvm的类加载规范,其他类仍使用父加载器加载)

  • <2>加载自顶二个是的class文件(如通过互连网流传的经过加密的class文件字节码):findclass中加密后再加载

故障演习平台最基本的正是Agent组件——字节码编织框架,那一个框架是纯Java的依照Instrumentation-API的AOP建设方案。它能够实惠研究开发人士对于字节码插桩拆桩操作,可以比较轻松的落到实处故障演练、流量录像以致任何的施用模块。

高可用架构是保证服务牢固性的主干。

6.自定义的classloader

下大器晚成版本的Agent实现就发生了,把具有Agent的类和贯彻的功力抽象出来,放到两个自定义的AgentClassLoader里面,字节码注入到对象应用程式后方可经过反射的办法来调用具体的事件达成。

举个例子说,依靠Ali云品质测量检验 PTS,高效用创设全链路压测系列,通过开源组件 Sentinel 完毕限流和贬低作用。那一遍,阅历了 6 年岁月的修正和施行,累积在线上实施练习场景达数万次,大家将Alibaba在故障演习领域的新意和推行,浓缩成一个混沌工程工具,并将其开源,命名叫ChaosBlade。

(1)加载字节码到内部存款和储蓄器:(这一步平日通过findclass()方法实现卡塔尔国

以U奥迪Q7LClassLoader为例:该类的构造函数返现必需拟订贰个U途锐L数据技艺创立该指标,该类中隐含贰个U奥迪Q7LClassPath对象,U奥迪Q7LClassPath会判别传过来的U景逸SUVL是文件大概Jar包,创造相应的FileLoader也许JarLoader只怕默许加载器,当jvm调用findclass时,那么些加载器将class文件的字节码加载到内部存款和储蓄器中

上边的章程相像很周详的消除了难题,然而随着平台的使用专门的工作线要对成千上万接口和措施同不时候开展故障练习,那么大家转换的Drill类里面就可以有各个:

职能和特点

现象丰硕度高

ChaosBlade 帮助的无知实验现象不唯有覆盖底工能源,如 CPU 满载、磁盘 IO 高、互联网延迟等,还满含运维在 JVM 上的选择试验现象,如 Dubbo 调用超时和调用万分、钦赐方法延迟或抛非凡以致再次回到特定值等,同不经常候提到容器相关的尝试,如杀容器、杀 Pod。后续会每每的充实执行现象。

动用轻巧,易于明白

ChaosBlade 通过 CLI 格局施行,具备温馨的下令提示效率,可以省略便捷的左臂使用。命令的书写遵从Alibaba公司内多年故障测量检验和排练履行抽象出的故障注入模型,档次鲜明,易于阅读和精通,减弱了混沌工程进行的三昧。

现象扩展方便

怀有的 ChaosBlade 实验实行器同样遵从上述提到的故障注入模型,使实验现象模型统意气风发,便于开采和掩护。模型本人老妪能解,学习开销低,能够根据模型方便赶快的强盛更加多的愚昧实验现象。

图片 3

(2)StandardClassLoader:

加载tomcat容器的classLoader,此外webAppClassLoader在loadclass时,开掘类不在JVM的class帕特h下,在PackageTriggers(是叁个字符串数组,富含大器晚成组不能够运用webAppClassLoader加载的类的包名字符串)下的话,将由该加载器加载(注意:StandardClassLoader并未覆盖loadclass方法,所以其加载的类和AppClassLoader加载没什么分别,並且动用getClassLoader再次来到的也是AppClassLoader)(其余,假若web应用直接放在tomcat的webapp目录下该利用就能由此StandardClassLoader加载,测度是因为webapp目录在PackageTriggers中?)

类加载模型

图片 4

2.ClassLoader的阶段加运载飞机制

  • 系统强弱重视混乱、弱重视无降级;
  • 系统流量急剧增加,系统体量不足,未有限流熔断机制;
  • 硬件能源网络现身难题影响系统运行,未有高可用的互联网架构。
(3)开端化class对象,实践静态初阶化器并在这里阶段末尾初步化静态字段为默许值

故障演习平台:查看故障预案是不是真正的起效能的阳台。

(2)完结自定义ClassLoader日常会三回九转ULANDLClassLoader类,因为这一个类实现了绝大许多主意。

Agent的完好框架结构如图所示:

原书链接

以上内容只是私有笔记纪录,越多完整内容请购买作者原书籍查看。《深远解析JavaWeb本事内部原因》

但是想改良的是汤姆cat WebClassLoader所加载的com.xxx.InvocationHandler这一个类的Invoke方法,差别的ClassLoader之间的类是不能够相互访谈的,做字节码的转变并无需那些类的实例,也无需回到结果,所以能够因此Instrument API获得那么些类加载器,而且能够依附类名称获取到这么些类的字节码进行字节码转换。故障类Drill.class和变形后的com.xxx.InvocationHandler.class重新load到JVM中,达成了插桩操作。

(2)Jvm加载class文件到内享有三种艺术,隐式加载和出示加载,平日那二种情势是混合使用的
  • <1>隐式加载:是通过JVM来自动加载必要的类到内部存款和储蓄器的秘籍,当某些类被使用时,JVM开掘此类不在内部存款和储蓄器中,那么它就能够活动加载该类到内部存款和储蓄器

  • <2>展现加载:通过调用this.getClasss.getClassLoader.loadClass(),Class.forName,自个儿完成的ClassLoader的findClass方法

  • BootstrapClassLoader引导类加载器加载的是JVM本身要求的类,那些类加载使用C++语言实现的,是设想机本身的意气风发部分;
  • ExtClassLoader它负担加载<JAVA_HOME>/lib/ext目录下依旧由系统变量-Djava.ext.dir钦定位路线中的类库;
  • AppClassLoader它负责加载系统类路线java-classpath或-D java.class.path钦点路径下的类库,也等于我们经常应用的classpath路线;
  • CommonClassLoader以至下面的都以汤姆cat定义的ClassLoader。

4.科学普及加载类错误剖析

// BEFORE

7.完成类的热布置:

  • (1)同三个classLoader的三个实例加载同一个类,JVM也会识别为八个

  • (2)无法重复加载同两个类(全名相近,并应用同叁个类加载器卡塔尔,会报错

  • (3)不应该动态加载类,因为对象呗援用后,对象的性格结构被改革会引发难点

小心:使用分裂classLoader加载的同八个类公事获得的类,JVM将作为是多个差异类,使用单例情势,强制类型转变时都恐怕因为这么些原因出难点。

  • 服务A调用服务B在Client端的Proxy层做AOP;
  • 起步Agent而且生成三个Drill类invoke方法,抛出三个运营期至极;
  • 字节码变形:在代码第少年老成行在此以前扩大Drill.invoke();
  • 只要想更改万分类型,退换Drill类就可以,换到Sleep 3s ClassRedifine事后会再度load到JVM达成故障类型的转速只怕免除。
(3)webAppClassLoader如:

Servlet等web应用中的类的加载(loadclass方法的准则详见P169卡塔 尔(英语:State of Qatar)

try {

3.怎么着加载class文件:

分为五个步骤 加载字节码到内存、Linking、类字节初始化赋值

图片 5

(1)JVM平台提供三层的ClassLoader,那三层ClassLoader能够分为两类,分别是劳动JVM自己的,和劳动周围普通类的。分别是:
  • <1>BootstrapClassLoader:首要加载JVM自个儿专门的学问所急需的类,该ClassLoader未有父类加载器和子类加载器

  • <2>ExtClassLoader:那么些类加载器雷同是JVM本身的一片段,不过还是不是由JVM完结,首要用来加载System.getProperty(“java.ext.dirs”卡塔尔国目录地下的类,如本机的值“D:javajdk7jrelibext;C:WindowsSunJavalibext”

  • <3>AppClassLoader:加载System.getProperty("java.class.path")(注意了在ide中运作程序时,该值常常是该类型的classes文件夹卡塔 尔(英语:State of Qatar)中的类。全体的自定义类加载器不管直接促成ClassLoader,是三番五回自U本田CR-VLClassLoader或其子类,其父加载器(注意:父加载器与父类的分级卡塔尔国都以AppClassLoader,因为无论是调用哪个父类的构造器,最后都将调用getSystemClassLoader作为父加载器,而该办法再次来到的难为AppClassLoader。(当应用程序中从不其余自定义的classLoader,那么除了System.getProperty(“java.ext.dirs”卡塔尔目录中的类,其余类都由AppClassLoader加载卡塔 尔(阿拉伯语:قطر‎

事件模型可以变成多少个职能:

(1)供给利用自定义classloader的意况
  • <1>不在System.getProperty("java.class.path")中的类公事不能被AppClassLoader找到(LoaderClass方法只会去classpath下加载特定类名的类卡塔 尔(阿拉伯语:قطر‎,当class文件的字节码不在Class帕特h就须求自定义classloader

  • <2>对加载的一点类供给作非常管理

  • <3>定义类的时间效益机制,对曾经修改的类重新加载,达成热布署

首先介绍下多少个类加载器:

5.常用classLoader(书本此处其实是对tom加载servlet使用的classLoader深入分析卡塔尔

以Dubbo为例表明下什么注入故障和消逝故障:

(2)NoClassDefFoundError:

日常性是采用new关键字,属性援引了有个别类,世袭了有个别类或接口,但JVM加载这几个类时开采那个类不设有的那些

原标题:去何地系统高可用之法:搭建故障练习平台

(1)ClassNotFoundException:

平常是jvm要加载贰个文本的字节码到内部存储器时,未有找到这一个字节码(如forName,loadClass等办法)

  • 零费用接入,没有必要申请其余财富;
  • 故障注入裁撤,不供给重启服务;
  • 能够提供全部集群的拓扑结构。

来源:Qunar技巧沙龙订阅号(ID:QunarTL卡塔尔

故障演习平台架构首要分为四有些:

步骤三、钦命机器;

  • 在方法体推行早前一向重返自定义结果对象,原有艺术代码将不会被实行;
  • 在方法体再次回到早先再次布局新的结果对象,以致能够变动为抛出卓殊;
  • 在方法体抛出非常之后再一次抛出新的丰硕,甚至足以变动为健康返回。

foo();

小编:

1、故障演练平台的欧洲经济共同体框架结构

小编介绍

2、 Agent全部架构

静态编织的主题素材是只要想校勘字节码必得重启,那给支付和测量试验进度招致了相当的大的辛劳。动态的法子固然能够在运转期注入字节码完毕动态增进,但从不统风流倜傥的API相当的轻便操作错误。基于此,我们利用动态编织的法门、标准的API来标准字节码的改变——Agent组件。

高可用系统独立实行

去哪儿网二零零六年树立现今,随着系统规模的逐年扩充,已经有无数个利用系统,那几个系统里面包车型地铁耦合度和链路的复杂度不断抓好,对于大家创设布满式高可用的系统架构具备庞大挑衅。我们须要一个平台在运营期自动注入故障,核准故障预案是或不是起效——故障练习平台。

// RETURN

*/

* do something...

在支付Agent的时候,首个应用是故障演习平台,那么那时候其实大家并不要求Agent实行的进程中有自定义结果对象的回来,所以率先个本子的Agent采取硬编码的情势进行动态织入:

这是某职业部的系统拓扑图:

系统里头的倚重特别复杂、调用链路很深、服务时期从来不分支。在这里种复杂的依赖下,系统一发布生了几起故障:

如下代码:

故障类型:首要不外乎运营期格外、超时等等。通过对系统有个别服务动态地注入运营期非凡来达成模拟故障的指标,系统根据预案推行相应的计谋验证系统是或不是是真正的高可用。

多个故障原因:

  • 类隔开分离的主题素材:不要污染原生APP;
  • 事件的贯彻是可编写翻译的;
  • 支持回到自定义的结果。

Dubbo调用的注入进程

哪些创设一个高可用的系统吧?首先要剖析一下不可用的要素都有何样:

图片 6

那么故障练习平台就热闹优异登台了。当上述的高可用推行都做完,利用故障演习平台做一遍真正的故障演习,在系统运营期动态地流入一些故障,进而来证实下系统是还是不是比照故障预案去施行相应的降级也许熔断战略。

新的架构须求消除四个难题:

图片 7

而是怎么本领科学利用呢?如下图所示:

  • 前台展示系统(WEB卡塔 尔(英语:State of Qatar):呈现系统之间的拓扑关系以致各类AppCode对应的集群和艺术,基本上能用具体的不二诀要开展故障的流入和消释;
  • 透露种类(Deploy卡塔尔国:其生机勃勃种类主要用来将故障练习平台的Agent和Binder包发表到目标应用软件的机械上还要运转施行。前台显示系统会传递给宣布平台要拓宽故障注入的AppCode以致指标APP的IP地址,通过这多个参数公布种类能够找到相应的机械举行Jar包的下载和运转;
  • 劳务和下令分发系统(Server卡塔 尔(英语:State of Qatar):其意气风发系统入眼是用于命令的散发、注入故障的情形记录、故障注入和解除操作的逻辑、权限校验以至相关的Agent的归来音信选用效果。前台页面已经接入QSSO会对当前人能够操作的IP列表做故障注入,堤防危机。后端命令分发的模块会和布署在对象应用程式上的Agent进行通讯,将指令推送到Agent上试行字节码编织,Agent推行命令后回去的内容通过Server和Agent的长连接传回Server端;
  • Agent和Binder程序:Agent负担对指标APP做代办并且做字节码加强,具体代理的法子能够通过传输的吩咐来调节,代理方法后对艺术做动态的字节码加强,这种字节码加强全部无侵入、实时生效、动态可插拔的特点。Binder程序首假使通过揭橥系统传递过来的AppCode和开发银行端口(ServerPort卡塔尔国找到对象应用程式的JVM进度,之后试行动态绑定,完毕运营期代码巩固的效率。

图片 8

步骤一、输入AppCode;

三、故障练习平台

王鹏,前年参加去何方机票职业部,首要从事后端研究开发专门的学问,近期在机票工作部肩负路程单和故障练习平台以致公共服务ES、数据同步中间件等休戚相关的研究开发专业。

图片 9

动用的功利是很令人瞩目标:

二、系统高可用的方法论

if method==业务线定义方法

故障类加载模型

  • 在BootstrapClassLoader里面注入Drill类作为通讯类;
  • Agent会选用命令,根据事件类型对InvocationHandler做字节码变形,注入到对象应用软件;
  • 在对象应用程式调用的时候,调用Drill.invoke(targetJavaClass,targetJavaMethod, targetThis, args卡塔 尔(阿拉伯语:قطر‎传递过来多少个参数(指标类、方法、实例、本身参数等卡塔尔国;
  • Drill类通过反射的法子调用AppClassLoader里面包车型大巴切切实实事件完成,比方BEFORE事件的实践代码,来产生注入后的逻辑推行。

Agent的欧洲经济共同体架构

return;

图片 10

图片 11

  • 弱信赖挂掉,主流程挂掉,改过报废凭证的付出情形,下单主流程战败;
  • 基本服务调用量陡增,某服务超时引起相关联的保有服务“雪崩”;
  • 机房网络也许有个别机器挂掉,无法提供基本服务。

Agent怎么样防备“类污染”

图片 12

作者:王鹏

do xxx

}

Agent和连锁的lib会放到AppClassLoader那生龙活虎层去加载,利用Javasist做字节码的织入,所以Javasist的加载器正是AppClassLoader。

欣逢的题材

五、总结

图片 13

一、背景

  • 支撑分化的模块的出席,譬喻Mock、流量摄像、故障演练等;
  • 支撑QSSO的权位验证;
  • 支撑测量试验和虚伪遇到的无资金接入;
  • 援救活动铺排无需人工加入;
  • 扶持种种故障命令的发表和施行、 超时 、相当以至数额的回到;
  • 支撑形式级其余编制以致代码实行流程的编织;
  • 援助在随便的Web容器推行Agent代理。

如图所示,事件模型首要可分为三类事件:

运用方式

步骤二、选用故障方法;

/*

// THROWS

Agent组件:透过JDK所提供的Instrumentation-API达成了使用HotSwap能力在不重启JVM的情景下实现对随便方法的进步,无论大家是做故障演习、调用链追踪(QTrace卡塔 尔(英语:State of Qatar)、流量录像平台(Ares卡塔 尔(英语:State of Qatar)以致动态扩充日志输出BTrace,都必要三个独具无侵入、实时生效、动态可插拔的字节码加强组件。

怎么消除?

Agent的事件模型

BEFORE在艺术实践前事件、THROWS抛出十二分事件、RETUENVISIONN再次来到事件。那三类事件能够在点子施行前、重临和抛出卓殊那三种情形做字节码编织。

} catch (Throwable e) {

本文由365bet体育在线开户发布于365bet亚洲版官网,转载请注明出处:深入分析ClassLoader加载机制,去哪儿系统高可用之

关键词:

上一篇:没有了
下一篇:没有了