系统精简之道:如何以极低风险高效清理线上无用代码-去哪儿旅行+马阳阳_第1页
系统精简之道:如何以极低风险高效清理线上无用代码-去哪儿旅行+马阳阳_第2页
系统精简之道:如何以极低风险高效清理线上无用代码-去哪儿旅行+马阳阳_第3页
系统精简之道:如何以极低风险高效清理线上无用代码-去哪儿旅行+马阳阳_第4页
系统精简之道:如何以极低风险高效清理线上无用代码-去哪儿旅行+马阳阳_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

去哪儿旅行基础架构部/资深研发工程师马阳阳为什么去哪儿网会启动系统瘦身项目?背景效率下降效率下降系统瘦身背景&痛点一年内无变更应用:20%服务精简代码精简服务精简代码精简系统瘦身目标&挑战其他火车票机票酒店其他火车票机票酒店系统瘦身时间及组织架构规划票瘦身公共支撑团队(虚拟)筛选模型(方法论)找得到删得好找得到删得好如何自动化、低风险地精简服务?可精简服务特征分析网关服务C②③InfoQ极客传媒“删得好”-准全快0c278849ce91c4cbbae98867a03075da4d9d34f08a48bcb1083下一操作时间0ebc3c12d46742c5b3e465a0bc36fa60e3b4394c588cd45a54c>服务平台0c278849ce91c4cbbae98867a03075da4d9d34f08a48bcb1083下一操作时间0ebc3c12d46742c5b3e465a0bc36fa60e3b4394c588cd45a54c5c944a575e3045ed878efd1312022-08-1611:37:395c944a575e3045ed878efd1312022-08-1611:37:392022-054c026597ea949b4aaa2b69ed909d16a089c44788b39169ccfad观察期观察2周03代码精简如何精准找到线上无流量的方法?量大通用性(效果)(效率)未被引用的方法(静态)重构privatestaticfinalLoggerlogg@Before("execution(*com.qunar.noah.kvm.*.*(..))")publicvoidlogBefore(JoinPointjoinPoint){("Entering"+joinPoint.getsignature().getName()+"method");}}Agent上报、Agent上报、取出日志DB1、猜测:有方法执行次数1、猜测:有方法执行次数的计数器 起初执行多次后TheServiceabilityAgent(SA).TheServiceabilityAgentisaSunprivatecomponentintheHotSpotrepositorythatwasdevelopedbyHotSpotengineerstoassistindebuggingHotSpot.TheythenrealizedthatSAcouldbeusedtocraftserviceabilitytoolsforenduserssinceitcanexposeJavabbjectsaswellasHotSpotdatastructuresbothinrunningprocessesandinEorefiles.headerklass(oop(oop)Maven:comqunardpartysajdi>META-INForaclejvm.hotspotjfrsun,lvm.hotspotclassfilecodecompilerdebuggetools>jcoresoql>ClassLoaderStats>DumpJFR>JInfoCJMap>cJStackObjectHistogram>PMapInfoQ极客传媒跑数:探测JVM中方法计数,并保存结果的过程方案性能损耗故障风险实现复杂度高低高Agent字节码插桩低中高基于SA工具无无低挖掘特征SA方案详细设计-性能无损跑数度量选型度量方案清理代码对业务性能无影响故障风险为零!不接线上流量了(进程还在)进行SA跑数SA方案详细设计-跑数代码实现度量选型度量方案清理代码起初执行多次后解释执行编译执行VMgetVMgetSystemDictionaryallClasse//扫描所有已被编译成codeBlob的类}InfoQ极客传媒SA方案详细设计-解释执行方L度量选型度量方案清理代码解释执行编译执行}aoverridepublicvoidvisit(Klassklass){if(klassinstanceofInstanceklass){②finalMethodArraymethods=((Instanceklass)klass).getMethods();for(inti=o;i<methods.length();i++){finalMethodmethod=methods.at(i);if(method.getInvocationCount()>θ){}}SA方案详细设计-编译执行方法publicclassCompiledMethodVisitorimplementsCodecacheVisitor{①publicCompiledMethodVisitor(Set<MethodDefinition>result){this.result=result;}度量选型度量方案清理代码解释执行编译执行}取差集取差集SA方案详细设计-计算可精简方法集挖掘特征度量选型度量方案清理代码挖掘特征度量选型度量方案清理代码“删得好”-多种手段注意代码可编译代码身分支分支*ldparamcommand已经与入执行工下又的命令对家//执行hosts同步后返回的当前服务器的hosts进行记录InfoQ极客传媒“删得好”-最佳实践否否全自动精简否全自动精简大仓库半自动精简重要包全自动精简半自动精简全自动精简04最终效果代码少了多少?带来了哪些收益?代码精简服务精简代码精简服务精简(数千万行)发布耗时(秒)需求耗时(天)发布耗时(秒)05展望未来之后还有哪些方向和技术值得探索?代码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论