金沙国际唯一官网网址 13

信息时代传输

如果你想要提升开发效率,通常是jvm要加载一个文件的字节码到内存时

28 11月 , 2019  

原题目:去哪个地方系统高可用之法:搭建故障演习平台

金沙国际唯一官网网址 1

Classloader担任将Class加载到JVM中,何况规定由极其ClassLoader来加载(父优先的等第加运载飞机制卡塔尔国。还也有一个职分就是将Class字节码重新解释为JVM统风姿洒脱须要的格式

笔者介绍

Ali妹导读:削减故障的最棒办法正是让故障常常性的产生。通过不停重复战败进程,持续晋级系统的容错和弹性才能。今日,Alibaba把三年来在故障练习领域的新意和实践汇浓缩而成的工具实行开源,它正是“ChaosBlade”。要是你想要进步开垦效能,不妨来精通一下。

1.Classloader类布局剖判

王鹏,二〇一七年加入去哪里机票职业部,首要从事后端研究开发职业,近些日子在机票工作部担当路程单和故障演练平台以至公共服务ES、数据同步中间件等有关的研究开发专门的职业。

金沙国际唯一官网网址,高可用布局是涵养服务稳固性的骨干。

(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这些类?卡塔尔

去哪儿网2007年创立到现在,随着系统规模的逐月增添,已经有比超级多少个利用种类,这个系统之间的耦合度和链路的复杂度不断坚实,对于我们创设布满式高可用的类别结构拥有庞大挑衅。大家须求三个平台在运维期自动注入故障,查验故障预案是还是不是起效——故障演练平台。

Alibaba在海量互连网服务以致每一年双11场景的实践进度中,沉淀出了席卷全链路压测、线上流量管理调控、故障练习等高可用焦点能力,并通过开源和云上服务的款型对外输出,以补助企业顾客和开荒者享受Alibaba的技巧红利,进步花销作用,减少工作的营造流程。

(2)完结自定义ClassLoader一般会持续U凯雷德LClassLoader类,因为这一个类实现了绝大大多方式。

一、背景

比方说,依赖Ali云质量测验 PTS,高功能营造全链路压测种类,通过开源组件
Sentinel 完结限流和贬低功用。那叁次,经验了 6
年时光的精耕细作和实行,累加在线上举行练习场景达数万次,大家将Alibaba在故障练习领域的新意和施行,浓缩成一个混沌工程工具,并将其开源,命名字为ChaosBlade。

2.ClassLoader的级差加运载飞机制

那是某工作部的种类拓扑图:

ChaosBlade 是什么?

ChaosBlade
是生龙活虎款遵从混沌工程推行原理,提供丰硕故障场景达成,扶持布满式系统升高容错性和可恢复生机性的愚拙工程工具,可落成底层故障的注入,特点是操作简单、无侵入、扩充性强。

ChaosBlade 基于 Apache License v2.0 开源公约,近日有 chaosblade 和
chaosblade-exe-jvm 七个宾馆。

chaosblade 包蕴 CLI 和接受 Golang
完成的底蕴能源、容器相关的鸠拙实验实践实践模块。chaosblade-exe-jvm
是对运作在 JVM 上的接收实践混沌实验的施行器。

ChaosBlade 社区三番一遍还有或许会加多 C++、Node.js 等别的语言的无知实验实践器。

金沙国际唯一官网网址 2

(1)JVM平台提供三层的ClassLoader,这三层ClassLoader能够分成两类,分别是劳务JVM自个儿的,和劳动广大普通类的。分别是:
  • <1>BootstrapClassLoader:首要加载JVM自己职业所急需的类,该ClassLoader未有父类加载器和子类加载器

  • <2>ExtClassLoader:这一个类加载器相符是JVM本人的黄金时代局地,然则还是不是由JVM实现,首要用以加载System.getProperty(“java.ext.dirs”卡塔尔目录地下的类,如本机的值“D:javajdk7jrelibext;C:WindowsSunwww.2979.com,Javalibext”

  • <3>AppClassLoader:加载System.getProperty(“java.class.path”)(注意了在ide中运路程序时,该值日常是该类型的classes文件夹卡塔尔国中的类。全体的自定义类加载器不管直接促成ClassLoader,是继续自U安德拉LClassLoader或其子类,其父加载器(注意:父加载器与父类的独家卡塔尔都是AppClassLoader,因为随意调用哪个父类的构造器,最后都将调用getSystemClassLoader作为父加载器,而该措施再次回到的难为AppClassLoader。(当应用程序中平昔不其它自定义的classLoader,那么除了System.getProperty(“java.ext.dirs”卡塔 尔(阿拉伯语:قطر‎目录中的类,别的类都由AppClassLoader加载卡塔 尔(英语:State of Qatar)

金沙国际唯一官网网址 3

干什么要开源?

不少商户现已开头关切并探讨混沌工程,渐渐变成测验系统高可用,营造对系统消息不得缺点和失误的工具。但混沌工程领域近来还处于三个快速多变的阶段,最好实行和工具框架未有统风姿罗曼蒂克标准。实施混沌工程只怕会带动一些地下的业务风险,经历和工具的缺少也将尤为阻止
DevOps 人员实施混沌工程。

混沌工程领域近些日子也许有广大美好的开源工具,分别覆盖有些世界,但这么些工具的使用方法差距,此中多少工具上手难度大,学习开销高,混沌实验技艺单大器晚成,使许多人对混沌工程领域功成身退。

Alibaba公司在混沌工程领域曾经推行多年,将混沌实验工具 ChaosBlade
开源指标,大家希望:

  • 让越来越多个人理解并到场到混沌工程领域;
  • 压编创设混沌工程的门路;
  • 还要依附社区的工夫,完备越来越多的古板实验现象,协同推动混沌工程领域的上进。
(2)Jvm加载class文件到内享有二种艺术,隐式加载和显示加载,经常那三种方法是混合使用的
  • <1>隐式加载:是通过JVM来自动加载须求的类到内部存款和储蓄器的情势,当有些类被选拔时,JVM开采此类不在内部存款和储蓄器中,那么它就能自行加载该类到内部存款和储蓄器

  • <2>显示加载:通过调用this.getClasss.getClassLoader.loadClass(),Class.forName,自身实现的ClassLoader的findClass方法

系统里面包车型大巴依赖性非常复杂、调用链路很深、服务时期从未分支。在此种复杂的倚重下,系统发生了几起故障:

ChaosBlade 能一举成功什么难题?

衡量微服务的容错本领

因此模拟调用延迟、服务不可用、机器能源满载等,查看发生故障的节点或实例是不是被活动隔绝、下线,流量调整是或不是精确,预案是不是有效,同临时间观望系统豆蔻年华体化的
QPS 或 RT
是还是不是受影响。在那幼功上得以减缓扩张故障节点范围,验证中游服务限流降级、熔断等是或不是管用。最后故障节点增至乞求服务超时,预计系统容错红线,权衡系统容错本事。

证明容器编排配置是不是制造

通过模拟杀服务 Pod、杀节点、增大 Pod
财富负载,观看系统服务可用性,验证副本配置、财富节制配置以致 Pod
下布置的器皿是不是合理。

测量试验 PaaS 层是或不是结实

经过模拟上层能源负载,验证调节类别的灵光;模拟重视的分布式存款和储蓄不可用,验证系统的容错技艺;模拟调解节点不可用,测量试验调解任务是或不是自动员搬迁移到可用节点;模拟主备节点故障,测验主备切换是不是平常。

表达监察和控制告急的时效性

透过对系统注入故障,验香港证肆期货(Futures卡塔 尔(英语:State of Qatar)交易监督委员会察和控制目的是不是正确,监察和控制维度是或不是康健,告急阈值是还是不是合理,告急是或不是火速,告急接受人是不是正确,通告路子是不是可用等,进步监督检查告急的标准和时间效益性。

固化与清除难题的救急力量

透过故障突袭,随机对系统注入故障,考察相关人士对难题的救急力量,以至难点举报、处理流程是不是合理,到达利用战争中获取来的人力,训练人牢固与减轻难点的力量。

(3)上级委托机制:当三个加载器加载类字时,先委托其父加载器加载,若加载成功则反映给该加载器,若父加载器无法加载,则由该加载器加载
  • 弱注重挂掉,主流程挂掉,校勘报废凭证的付出景况,下单主流程失利;
  • 主干服务调用量陡增,某服务超时引起相关联的有所服务“雪崩”;
  • 机房互联网可能有个别机器挂掉,无法提供基本服务。

意义和特色

场所丰硕度高

ChaosBlade 扶助的无知实验现象不唯有覆盖功底财富,如 CPU 满载、磁盘 IO
高、网络延迟等,还包涵运行在 JVM 上的运用试验现象,如 Dubbo
调用超时和调用万分、内定方法延迟或抛分外以致重返特定值等,同期涉嫌容器相关的实施,如杀容器、杀
Pod。后续会死缠乱打的增添施行现象。

运用轻巧,易于明白

ChaosBlade 通过 CLI
格局进行,具备自身的指令提示效果,能够大概快速的左侧使用。命令的书写固守Alibaba公司内多年故障测量试验和排练执行抽象出的故障注入模型,档案的次序明显,易于阅读和透亮,收缩了混沌工程实践的要诀。

气象增添方便

怀有的 ChaosBlade
实验实施器一样坚决守护上述提到的故障注入模型,使实验现象模型统意气风发,便于开采和掩护。模型本人简单明了,学习花销低,能够依靠模型方便飞速的扩张更加多的无知实验现象。

金沙国际唯一官网网址 4

3.怎么着加载class文件:

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

多个故障原因:

ChaosBlade 的演进史

EOS(2012-2015):故障演习平台的开始的大器晚成段时代版本,故障注入技艺通过字节码加强方式实现,模拟见惯不惊的
RPC 故障,解决微服务的强弱依赖治理难点。

MonkeyKing(2016-2018):故障演习平台的进级版本,丰裕了故障场景(如:能源、容器层场景卡塔 尔(阿拉伯语:قطر‎,起头在生育条件开展局地规模化的排演。

AHAS(2018.9-至今):Ali云应用高可用服务,内置练习平台的全套功力,帮助可编写制定演习、练习插件扩充等力量,并结成了布局感知和限流降级的法力。

ChaosBlade:是 MonkeyKing
平台底层故障注入的得以完成工具,通过对演习平台底层的故障注入技能进行抽象,定义了意气风发套故障模型。合营客商本身的
CLI 工具实行开源,帮助云原生客户张开混沌工程测量检验。

金沙国际唯一官网网址 5

(1)加载字节码到内部存款和储蓄器:(这一步经常通过findclass()方法完结卡塔尔国

以U奥德赛LClassLoader为例:该类的布局函数返现必需制订二个U奥德赛L数据才具创设该目的,该类中包涵一个ULacrosseLClassPath对象,UOdysseyLClassPath会决断传过来的U奥德赛L是文本或许Jar包,创设相应的FileLoader或然JarLoader大概暗中认可加载器,当jvm调用findclass时,那几个加载器将class文件的字节码加载到内部存款和储蓄器中

  • 系统强弱重视混乱、弱正视无降级;
  • 系统流量大幅度增加,系统体量不足,未有限流熔断机制;
  • 硬件能源互连网现身难题影响系统运维,未有高可用的网络构造。

几天前设计

职能迭代:

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

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

  • <3>分析:这一个品级类装入器转入类所选择的其余类

一应俱全的问题,在这里种复杂的依据布局下被加大,二个依附二16个SOA服务的连串,各个服务99.99%可用。99.99%的贰拾陆遍方≈99.7%。0.3%意味后生可畏亿次号令会有3,000,00次退步,换算成时间大致每月有2个时辰服务不安静。随着服务信任数量的变多,服务不平稳的概率会呈指数性升高,那几个标题最后都会转接为故障表现出来。

社区一同建设:

迎接访谈 ChaosBlade@GitHub,参加社区共同建设,包含但不防止:

  • 布局划杜撰计
  • 模块设计
  • 代码达成
  • Bug Fix
  • Demo样例
  • 文书档案、网址和翻译

正文小编:中亭

读书原来的文章

正文来源云栖社区同盟同伙“ Ali手艺”,如需转发请联系原版的书文者。

(3)开端化class对象,试行静态初阶化器并在此阶段末尾早先化静态字段为暗中同意值

二、系统高可用的方法论

4.大范围加载类错误深入分析

什么样创设叁个高可用的系统吧?首先要解析一下不可用的要素都有什么:

(1)ClassNotFoundException:

平凡是jvm要加载二个文本的字节码到内部存款和储蓄器时,未有找到这几个字节码(如forName,loadClass等办法)

金沙国际唯一官网网址 6

(2)NoClassDefFoundError:

平日是应用new关键字,属性援引了有个别类,世袭了某个类或接口,但JVM加载那一个类时开采那个类一纸空文的不得了

高可用系统独立实施

(3)UnsatisfiedLinkErrpr:

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

一手遮天上来讲,当图中具备的工作都做完,大家就可以以为系统是多少个的确的高可用系统。但真是那样啊?

5.常用classLoader(书本此处其实是对tom加载servlet使用的classLoader剖判卡塔尔

那就是说故障练习平台就热闹进场了。当上述的高可用执行都做完,利用故障练习平台做壹次真正的故障演习,在系统运转期动态地注入一些故障,进而来评释下系统是还是不是比照故障预案去施行相应的降级只怕熔断攻略。

(1)AppClassLoader:

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

三、故障演习平台

(2)StandardClassLoader:

加载tomcat容器的classLoader,其余webAppClassLoader在loadclass时,发掘类不在JVM的classPath下,在PackageTriggers(是一个字符串数组,满含风流浪漫组不能够采用webAppClassLoader加载的类的包名字符串)下的话,将由该加载器加载(注意:斯坦dardClassLoader并从未覆盖loadclass方法,所以其加载的类和AppClassLoader加载没什么分别,并且动用getClassLoader再次来到的也是AppClassLoader)(其它,假使web应用间接放在tomcat的webapp目录下该使用就能够透过StandardClassLoader加载,估摸是因为webapp目录在PackageTriggers中?)

故障练习平台:检查故障预案是还是不是真的的起成效的平台。

(3)webAppClassLoader如:

Servlet等web应用中的类的加载(loadclass方法的平整详见P169卡塔尔

故障类型:最首要回顾运行期分外、超时等等。通过对系统有个别服务动态地注入运营期至极来达到模拟故障的指标,系统根据预案执行相应的攻略验证系统是还是不是是真正的高可用。

6.自定义的classloader

1、故障演习平台的完全布局

(1)供给选择自定义classloader的状态
  • <1>不在System.getProperty(“java.class.path”)中的类公事不得以被AppClassLoader找到(LoaderClass方法只会去classpath下加载特定类名的类卡塔 尔(英语:State of Qatar),当class文件的字节码不在ClassPath就必要自定义classloader

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

  • <3>定义类的时效机制,对已经修正的类重新加载,达成热安插

故障练习平台构造首要分为四片段:

(2)加载自定义路线中的class文件
  • <1>加载特定来源的一些类:重写find方法,使特定类恐怕特定来源的字节码
    通过defineClass拿到class类并再次来到(应该切合jvm的类加载规范,其余类仍接收父加载器加载)

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

金沙国际唯一官网网址 7

7.实现类的热安顿:

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

  • (2)无法重复加载同四个类(全名相像,并选拔同一个类加载器卡塔尔,会报错

  • (3)不该动态加载类,因为对象呗引用后,对象的天性布局被改变会抓住难点

只顾:使用分歧classLoader加载的同叁个类公事获得的类,JVM将作为是三个分化类,使用单例方式,强制类型转换时都恐怕因为那一个缘故出难题。

  • 前台呈现系统(WEB卡塔尔国:展现系统里头的拓扑关系甚至种种AppCode对应的集群和方法,能够筛选具体的办法开展故障的流入和扫除;
  • 公告连串(Deploy卡塔尔国:其少年老成种类第意气风发用以将故障演习平台的Agent和Binder包公布到对象APP的机器上还要运转执行。前台显示系统会传递给发表平台要开展故障注入的AppCode以至指标应用程式的IP地址,通过那八个参数发布系统能够找到相应的机械实行Jar包的下载和开发银行;
  • 服务和下令分发系统(Server卡塔 尔(英语:State of Qatar):以此系统入眼是用来命令的分发、注入故障的景况记录、故障注入和消灭操作的逻辑、权限校验以致有关的Agent的回到新闻选择效果。前台页面已经接入QSSO会对当前人能够操作的IP列表做故障注入,防守危机。后端命令分发的模块会和配备在指标应用软件上的Agent实行通讯,将下令推送到Agent上实践字节码编织,Agent试行命令后回来的内容通过Server和Agent的长连接传回Server端;
  • Agent和Binder程序:Agent肩负对目的APP做代办并且做字节码加强,具体代理的点子能够透过传输的指令来支配,代理方法后对章程做动态的字节码加强,这种字节码加强全数无侵入、实时生效、动态可插拔的性状。Binder程序重借使通过宣布系列传递过来的AppCode和起步端口(ServerPort卡塔尔找到对象应用程式的JVM进度,之后实践动态绑定,完成运营期代码加强的成效。

原书链接

上述内容只是个体笔记纪录,越来越多完整内容请购买小编原书籍查看。《浓烈深入分析JavaWeb技巧内部原因》

2、 Agent全部构造

脚下AOP的落到实处有二种艺术:

  • 静态编织:静态编织发生在字节码生成时依据早晚框架的平整提前将AOP字节码插入到指标类和方法中;
  • 动态编织:在JVM运维期对钦定的方法成功AOP字节码增强。不可枚举的法子大大多选择重命名原有艺术,再新建多个同名方法做代办的行事格局来完成。

静态编织的标题是即便想退换字节码必需重启,那给支付和测量检验进度以致了超大的孤苦。动态的不二秘技就算能够在运转期注入字节码完毕动态增加,但没有统风流倜傥的API非常轻便操作不当。基于此,大家使用动态编织的秘技、规范的API来标准字节码的调换——Agent组件。

Agent组件:由此JDK所提供的Instrumentation-API完结了接收HotSwap技艺在不重启JVM的情况下达成对私行方法的抓牢,无论大家是做故障练习、调用链追踪(QTrace卡塔尔、流量摄像平台(Ares卡塔 尔(英语:State of Qatar)以致动态扩大日志输出BTrace,都必要四个怀有无侵入、实时生效、动态可插拔的字节码巩固组件。

Agent的风浪模型

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

金沙国际唯一官网网址 8

BEFORE在形式实行前事件、THROWS抛出极度事件、RETURAV4N重回事件。那三类事件能够在措施实施前、重临和抛出相当这两种情景做字节码编织。

正如代码:

// BEFORE

try {

/*

* do something…

*/

foo();

// RETURN

return;

} catch (Throwable e) {

// THROWS

}

事件模型可以实现四个功效:

  • 在方法体试行在此以前一向重回自定义结果对象,原有艺术代码将不会被实施;
  • 在方法体再次回到此前再一次组织新的结果对象,以至可以改换为抛出万分;
  • 在方法体抛出极度之后重新抛出新的要命,以至能够转移为健康再次来到。

Agent怎样防止“类污染”

在付出Agent的时候,第八个利用是故障演练平台,那么那时实在我们并无需Agent实行的长河中有自定义结果对象的归来,所以首先个版本的Agent选拔硬编码的章程举行动态织入:

金沙国际唯一官网网址 9

故障类加载模型

首先介绍下几个类加载器:

  • BootstrapClassLoader指点类加载器加载的是JVM自个儿供给的类,那几个类加载使用C++语言落成的,是虚构机本身的风华正茂有个别;
  • ExtClassLoader它承受加载<JAVA_HOME>/lib/ext目录下依然由系统变量-Djava.ext.dir钦定位路线中的类库;
  • 如果你想要提升开发效率,通常是jvm要加载一个文件的字节码到内存时。AppClassLoader它担任加载系统类路线java-classpath或-D
    java.class.path钦赐路径下的类库,约等于大家日常应用的classpath路线;
  • CommonClassLoader甚至下面的都以汤姆cat定义的ClassLoader。

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

只是想更正的是汤姆cat
WebClassLoader所加载的com.xxx.InvocationHandler那几个类的Invoke方法,分裂的ClassLoader之间的类是无法互相访谈的,做字节码的转移并无需这些类的实例,也无需回到结果,所以能够透过Instrument
API拿到那一个类加载器,况且能够依靠类名称获取到那一个类的字节码进行字节码转换。故障类Drill.class和变形后的com.xxx.InvocationHandler.class重新load到JVM中,完结了插桩操作。

以Dubbo为例表达下什么注入故障和湮灭故障:

金沙国际唯一官网网址 10

Dubbo调用的注入进度

  • 服务A调用服务B在Client端的Proxy层做AOP;
  • 起步Agent何况生成三个Drill类invoke方法,抛出二个运营期极度;
  • 字节码变形:在代码第黄金时代行以前扩展Drill.invoke();
  • 若果想退换极度类型,退换Drill类就能够,换来Sleep 3s
    ClassRedifine之后会再一次load到JVM完结故障类型的中间转播恐怕息灭。

欣逢的主题材料

下边包车型地铁法子相通很周详的化解了难题,可是随着平台的应用专门的学问线要对众多接口和艺术同一时间扩充故障演练,那么我们转换的Drill类里面就能有各个:

if method==业务线定义方法

do xxx

还要超轻巧拼接出错而且难以调节和测量检验,只可以把转换的类输出为文件,查看本身写的字节码编译成class文件是或不是科学,简直太忧伤了!

怎么消除?

新的构造须要裁撤多少个难题:

  • 类隔绝的主题材料:不要污染原生应用软件;
  • 事件的得以实现是可编写翻译的;
  • 扶持回到自定义的结果。

下生机勃勃版本的Agent实现就爆发了,把富有Agent的类和落到实处的功能抽象出来,放到三个自定义的AgentClassLoader里面,字节码注入到对象APP后得以由此反射的艺术来调用具体的事件达成。

金沙国际唯一官网网址 11

类加载模型

  • 在BootstrapClassLoader里面注入Drill类作为通信类;
  • Agent会接收命令,依照事件类型对InvocationHandler做字节码变形,注入到对象APP;
  • 在对象APP调用的时候,调用Drill.invoke(targetJavaClass,targetJavaMethod,
    targetThis,
    args卡塔尔传递过来多少个参数(目的类、方法、实例、自身参数等卡塔 尔(阿拉伯语:قطر‎;
  • Drill类通过反射的艺术调用AppClassLoader里面包车型客车实际事件完成,比方BEFORE事件的实践代码,来形成注入后的逻辑试行。

Agent的完整布局

Agent的总体布局如图所示:

金沙国际唯一官网网址 12

  • 支撑区别的模块的出席,比方Mock、流量录像、故障练习等;
  • 扶助QSSO的权限验证;
  • 帮助测验和虚伪情状的无花销接入;
  • 支撑活动安插无需人工出席;
  • 支撑种种故障命令的发表和奉行、 超时 、至极以致数额的回来;
  • 帮忙格局等第的编写制定乃至代码试行流程的编织;
  • 帮助在自由的Web容器实践Agent代理。

四、怎么着使用

应用的裨益是很明白的:

  • 零费用接入,没有必要申请其余财富;
  • 故障注入灭亡,无需重启服务;
  • 能够提供具备集群的拓扑布局。

可是怎么技艺准确接收啊?如下图所示:

金沙国际唯一官网网址 13

应用形式

步骤一、输入AppCode;

步骤二、选择故障方法;

步骤三、钦点机器;

步骤四、注入故障。

五、总结

故障演习平台最基本的即是Agent组件——字节码编织框架,这么些框架是纯Java的借助Instrumentation-API的AOP技术方案。它能够方便研究开发人士对于字节码插桩拆桩操作,能够超轻便的落到实处故障演练、流量录像以致任何的施用模块。

作者:王鹏

根源:Qunar技能沙龙订阅号(ID:QunarTL卡塔 尔(英语:State of Qatar)

dbaplus社会群体迎接广大技能职员投稿,投稿邮箱:editor@dbaplus.cn归来天涯论坛,查看愈来愈多

责编:

, , , , , , , ,


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图