《2017年如何优雅的落地中间件.pdf》由会员分享,可在线阅读,更多相关《2017年如何优雅的落地中间件.pdf(24页珍藏版)》请在三个皮匠报告上搜索。
1、如何优雅的落地中间件WORKPLANINGCONTENTSCONTENTS目 录食物链顶端的大爷们01叔能忍婶子不能忍02我们正面对的挑战03最终的解决方案04如何优雅的落地中间件-技术架构业务架构应用架构数据架构实际业务领域,模式建设规划应用系统,满足业务需求考虑场景中数据存储,读写的方法提供上层满足建设需求的资源1.0架构模型中间件是技术架构向上支撑的一块基石。虽然从宏观架构看,几乎找不到中间件的位置,但实际架构实现的过程中几乎都离不开中间件的支撑。因为中间件是正是某一类问题的通用技术解决方案军令如山两天完成接入一周全部发布一切掌握之中线上运行平稳老板喜笑颜开专心写写代码准备下次升级构思美
2、好蓝图1.1理想中落地的样子研发大佬1.2可伤心总是难免的大哥喝奶大哥喝奶弱势架构大哥给个机会大哥给个机会刷脸求接入打脸发布后201520162017未来蛮荒时期业务刚起步,作坊式开发20+团队15-20 应用20-30 节点开天辟地业务爆发,团队迅速扩大80+团队30-50 应用60-80 节点高歌猛进业务与团队持续爆发增长200+团队300+应用600+节点拓疆扩土业务稳定,进军新领域?团队?应用?节点持续发展异地研发部增多300+团队500+应用1500+节点1.32014业务上了高速路1.41爸爸是技术负责人或老板2组织上以行政命令的方式推进3微服务 部署各种“服务”到机器上可高速不给
3、换轮胎1.5想想我们的架构蓝图蓝不蓝,难不难你说如果无法落地,架构什么都是扯的。现有的流程都是依赖着应用的发布来完成架构落地,可是他们晃点我,我也很绝望啊55%等待接入发布每个应用的发布时间完全不可控少则两周,多达一月,也有稳定无发布的35%人员沟通推进沟通困难,而且沟通层次深从经理-组长-开发,甚至还有测试10%常规工作关注运行情况、收集运行数据依据数据继续迭代改进2.0寻找领域内的潜在问题铺路爪 Pavepaws无感升级自动化部署,动态加载运行时可控随时升降级,BUG热修复三方依赖隔离多版本依赖共存无冲突Java RuntimeInstrumentation利用Java本身的一些特性来完成
4、类的替换,监听Class Loader类加载的必经之路ClassTransformer字节码转换器用于在类在被实际Runtime解析前对字段,方法等进行编辑修改Shadow Loader影子加载器挂钩ClassLoader通过拦截loadClass等方法实现自由的类加载逻辑2.1铺路爪核心组件ClassLoaderJava RuntimeClass File Transformer后庭别院菊花香2.2AOP通过ClassFileTransformer进行基于字节码的方法切面 几乎没有性能损失 对任意非原生类任意方法操作loadClassfindResourcetransformClassLoa
5、derJava RuntimeClass File Transformer偷梁不换柱,移花能接木2.3HOOK拦截并修改目标ClassLoader 由ShadowLoader接管加载的工作 实现自己的资源查找逻辑loadClassdefineClassShadow LoadertransformfindResource2.4遵守基本的设计原则Im Interface!实现的还可以是不是伪代码IsolationTransformer.classbyte transform(String classname,byte bytecodes)ClassEditor editor=new AsmClas
6、sEditor(bytecodes);for(method in editor.Methods)scanAndReplaceInit(method);scanAndReplaceInit在类加载时检查类是否有依赖的服务,将原具体实现类的构建转给负责“隔离”的容器。容器会在单独的ClassLoader中加载,之后创建对应的实例返回。运行时为实现独立容器加载2.5APP2.6ImplContainerImplContainer一山容二虎,一公和一母APPService InterfaceServiceImpl2.7Se