【阿里在线技术峰会】魏鹏:基于Java容器的多应用部署技术实践

本文首先向大家介绍阿里Java容器的发展历程,整个Java容器从开始到现在经历了哪些阶段,接着给大家分享目前Java容器的基础架构,最后与大家探讨经过这样的改变之后,它能够完成的一些高阶的特性,比如合并部署和多版本部署等对于我们的效率提升有明显的帮助的技术。

直播视频:点此进入

PDF下载:点此进入

以下为整理内容:

 

阿里Java容器的发展历程

阿里巴巴在开始阶段,就像普通的网站一样,通过前端的http的流量进来完成数据库的查询、调用,然后把数据反馈回去。当网站变得很大的时候,不能再像过去一样,只是通过单个系统就能够完成多个业务功能,我们需要把系统做拆分,服务化就是必由之路,Java容器诞生于服务框架的编写过程中,随着阶段不断的向前演进,陆续接入了很多其它的中间件,整个过程升级非常便利,直接替换部署的目录即可完成升级。阿里系发展迅猛,我们也将面临一些挑战,比如网站的链路越来越长,调用错综复杂,怎样通过应用容器的部署方式的改变使我们的性能提升,这是容器需要考虑的问题。

 

容器架构

Java容器的标准架构如图所示,在应用容器Tomcat基础上,我们抽象出一套Java容器,可以理解为在Tomcat中的一个固定子系统,在这个子系统中,我们会切割出两块内容,一是容器,一是插件,服务框架、消息组件、配置组件等都是按照标准的方式接入进去,都被封闭在自己的类加载器中,不会和应用之间产生冲突,这样就使得各个中间件的发展不会受制于其它中间件版本的选择。同时,容器会提供这些插件标准的部署方式、生命周期和事件体系,使得中间件的起停能够被我们所控制,这些中间件能够知道应用的上下线的一些过程,使得整个中间件和应用的关系变得更加自然。任何的插件都可以轻松的接入到整个容器体系中,把这些能力带给应用。

 

合并部署

横轴代表规模,纵轴代表部署复杂度,部署复杂度其实是人为造成的,用户可能把公司内部的应用割裂成多个,每个需要完成不同的工作,这种逻辑应用数量的上升必然会造成部署复杂度会变得很高。当应用变得复杂后,公司的业务提升了,就会引入服务的概念,我们需要把不同的业务进行拆分,机器数量就会相应变多,应用数也会增加。用户依然去访问页面,但可能穿过很多系统,这就需要远程调用,远程调用把两个系统进行连接去满足用户的请求,这样的结构确定后,它的规模会不断的向上攀升,会变得更加复杂,用户请求会随着网站规模的不断扩大,导致用户的请求离实际的数据源越来越远,远程调用在任何一个点都是不可靠的,用户在这个过程中承担的失败的概率会越来越高,访问的速率会越来越慢。

那么,怎样改变这个状况呢?我们可以在部署时利用Java容器把不同的应用部署在一起,是否会有效果呢?

确定优化路径

我们的核心链路是确定的,不论你的网站多大,真正用户去访问的系统的某一个功能是非常火热的,在核心链路中热点也是已知的,最关键的是我们的流量入口是固定的,从流量入口下手,优化核心链路中的热点线路。

核心链路上强相关的多应用部署

左侧是传统的样方式,前台应用、服务应用A和服务应用B都是通过远程调用来连接的。多应用部署的方式就是把这些在开发带是不同隔离的应用在部署时放在同一个JVM去做,放在一起后就把整个系统的远程调用转化成本地调用,这个过程就是服务框架能够根据Java容器提供的信息完成调用方式的转变,把不同的强关联的应用部署在同一个Java容器里,使得整个流程更加的顺畅。

远程调用转本地调用

容器提供给服务框架当前部署的应用信息,调用时“查表”,当进行调用时,首先看调用的服务在本地是否有另外一个应用提供,如果有则不进行网络调用,直接把对应参数进行转移完成本地调用;如果没有,就从远端随机选一个地址发起远程调用。本地调用需要进行“深拷贝”。

“深拷贝”

我们需要将我们去请求一个应用的参数转化成另外一个类加载器能消化的数据,同时要把反馈回的数据消化成本加载器能够理解的数据,这个过程称为深拷贝。

深拷贝的性能对比可以看出,深拷贝的耗时平均只有Hessian的15%,并且没有统计网络开销。面对越来越大的数据结构,深拷贝的优势会愈加明显。

合并部署的效果

越来越多的访问数据来自于无线,可以看出QPS提升超过50%,数据越大提升越发明显。合并部署后性能衰减不是很明显,趋势非常柔性。

实际情况来看,Rt下降了50%,毛刺基本消失,链路更加平稳。

合并部署带来了什么

合并部署技术降低了成本,使相同的机器提供更大的数车,不需要增加机器。成本的降低也就意味着性能的提升,RT下降明显。

 

多版本部署

发布的本质即重启,那么,能不能不重启就发布呢?运用多版本部署方式能够避免用户进行重启。将两个版本的应用都部署到容器中后,对外提供服务的链接是不断的,对外提供的HTTP流量、TomCat流量是不变的,远程服务框架、消息处理也是不变的,当外界给予切流命令的时候,就把对应的旧版本的处理逻辑向新有版本进行跃迁,就完成对应版本的发布了,整个过程是非常流畅、柔性的。

事件体系

如果高维度的组件不去释放掉对应的应用和扩展,对应的应用资源就没有办法释放,同一个应用的多个版本都在一个机器上运行着,此时我们通过事件体系来解决这个问题。

通过响应事件来释放资源,事件类型有:应用部署事件、应用退部署事件、流量关闭事件、流量开启事件。

容器不仅提供了多应用的部署能力,同时把事件做了一定的统一的抽象,事件能够直达所有的中间件,所有的中间件都会去响应容器发布的事件,我们会告诉所有中间件,某个应用上线了或者下线了,流量开始进入或者切出应用,这些事件的发送,使得中间件可以从容的响应所有的变更。

多租户JVM

Java容器能够做到类型隔离,却做不到资源隔离,我们需要完成对应的资源的隔离,CPU、内存、I/O带宽等都需要隔离。怎么办呢?

阿里特有的多租户JVM,支持多租户部署的AliJDK,包含多租户API,创造一个独立的容器,在这个容器里面的资源是隔离的,在这个隔离的区域纵使出现内存泄漏,也不会影响到另外一个区域,在这个区域运作的CPU的消耗也不会影响到另一区域对应的执行逻辑,这就完成多版本部署里的资源隔离需要使用的技术。

依靠Tenant做到资源隔离。

  • Context对应Webapp
  • Tenant中创建Context
  • 销毁Context时销毁Tenant

多版本部署带来了什么

  • 发布速度非常快:实现了全量发布,自由切流。
  • 秒级回滚:旧版本暂时不下线,极速回滚。

总结与展望

  • 多应用部署是我们在应用部署方式和思考维度的改变。
  • 通过合并部署把链路上强相关的应用进行部署后,使得性能有所提升。
  • 多版本部署与发布提速。
  • 模块化应用的支持。
  • 高密度部署。
时间: 2024-10-01 19:42:59

【阿里在线技术峰会】魏鹏:基于Java容器的多应用部署技术实践的相关文章

阿里中间件技术专家魏鹏:基于Java容器的多应用部署技术实践

首届阿里巴巴在线技术峰会(Alibaba Online Technology Summit),将于7月19日-21日 20:00-21:30 在线举办.本次峰会邀请到阿里集团9位技术大V,分享电商架构.安全.数据处理.数据库.多应用部署.互动技术.Docker持续交付与微服务等一线实战经验,解读最新技术在阿里集团的应用实践. 阿里巴巴在线技术峰会专题:https://yq.aliyun.com/activity/97峰会统一报名链接:https://yq.aliyun.com/webinar/j

【阿里在线技术峰会】郑恩阳:电商互动营销的技术实现

本文根据天猫技术部互动平台郑恩阳在首届阿里巴巴在线技术峰会上的分享整理而成.他主要通过全民疯坎和赛车竞速赢汽车案例分享了电商互动营销的整体架构.相应的技术.利用Tengine来分担服务器压力.防作弊策略实现.传统授权方法的优化以及利用Hilo引擎进行多渲染等. 直播视频:点此进入 PDF下载:点此进入 以下为整理内容. 互动营销案例 边看边买的互动 在做这个互动的时候,我们希望能够在顾客的购物路径上做一些改变和创新.当用户看到这个视频的时候,如果用户有需求,能够直接点击视频上的锚点,直接进行购物

蚂蚁金服&阿里云在线金融技术峰会全套资料(视频+PDF)公开!

8月30-31日我们成功举办了"蚂蚁金服&阿里云在线金融技术峰会".本次峰会聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用与技术实践.目前相关活动视频.整理文章已经出炉,整理如下,供大家参考. 蚂蚁金服&阿里云在线金融技术峰会精彩回顾:https://yq.aliyun.com/activity/109 为了让大家更好的了解本次峰会议题和分享讲师,我们汇总了本次议题介绍如下,供大家参考.在峰会开始前,邀请大家仔细看下

资料来啦(含视频+PDF)!首届阿里巴巴在线技术峰会,9位大V演讲整理!

感谢参加阿里巴巴在线技术峰会.7月19日的3场专家分享:Blink.Docker.电商互动:7月20日的云数据库十大经典案例.基于Java容器的多应用部署.基于大数据的全球电商系统架构:7月21日的AliSQL性能优化与功能突破的演进之路.企业大数据平台仓库架构建设思路.阿里聚安全在互联网业务中的创新实践,9位专家的PDF和文章均已发布,欢迎分享.到今天,视频也已经出炉! 资料链接如下,欢迎分享. 大会专题链接:https://yq.aliyun.com/activity/97 7月19日 Bl

共话大数据 2013大数据全球技术峰会召开

2013年4月26日,由51CTO传媒旗下WOT(World of Tech)品牌主办的"2013大数据全球技术峰会"在北京富力万丽酒店正式举办.本次峰会聚焦大数据技术,围绕大数据基础架构与上层应用的生态系统,探索大数据基础的解决方案,全面剖析了数据从产生到挖掘到最后被消费的整个过程. 本届峰会为期2天,吸引了全球1000多位大数据领域的专业人士.企业及政府用户.技术专家.行业分析师和媒体共聚一堂,共同交流大数据时代的机遇和挑战,探讨在传统企业应用.新兴行业拓展的创新. 工信部软件与服

总统女婿主持召开白宫技术峰会 Facebook未派人参加

据外媒报道,特朗普总统的女婿贾瑞德-库什纳(Jared Kushner)周一主持召开了白宫技术峰会,邀请科技界一众大佬共商"如何改造并实现政府数字服务的现代化",然而Facebook未派代表参会,它也是科技五巨头中唯一一家未派代表参会的公司. 去年12月,特朗普在候任时就曾召开过一次技术峰会,商讨如何为美国创造就业机会和利用技术简化政府运作等问题.当时Facebook派出的代表是首席运营官谢丽尔-桑德博格(Sheryl Sandberg),但是这一次干脆连桑德博格都未参加最新的白宫技术

【阿里在线技术峰会】郭东白:基于大数据的全球电商系统性能优化

本文根据郭东白在首届阿里巴巴在线技术峰会上的分享整理而成.他首先介绍了AliExpress电商系统的理论基础,通过页面间跳出率的计算引出了全栈优化的思路.然后,他介绍了AliExpress平台的设计思路和性能优化过程.紧接着,他分享了AliExpress使用过的几个有效的优化策略:动态加速.静态化+ESI.元素合并请求.CDN调度优化等.最后,他用实例展示了性能优化带来的结果,并对架构设计的过程提出了几点思考和总结. 直播视频:点此进入 PDF下载:点此进入 以下为整理内容. 整个系统的理论基础

【阿里在线技术峰会】何登成:AliSQL性能优化与功能突破的演进之路

本文根据阿里高级数据库专家何登成在首届阿里巴巴在线技术峰会上的分享整理而成.他主要介绍了AliSQL相对于MySQL进行的性能优化.通过大连接.高并发下的数据库稳定性保障和库存热点更新两个问题的解决方案介绍了高低水位限流和线程池的使用方法以及库存热点优化的三步改进,最后提出了AliSQL的完整生态体系. 直播视频:点此进入 PDF下载:点此进入 以下为整理内容. 背景:当使用官方的MySQL时,发现在我们的体量下会面临比较大的挑战,所以,2011年我们在MySQL的基础上做了一些功能增强和bug

【阿里在线技术峰会】易立:从Docker到容器服务 ——Docker 云端实践之路

本文主要从Docker的编排技术,Docker在一个大规模生产环境中的使用开始切入,围绕Docker应用的深化,像谷歌,AWS,阿里云都推出了这样的容器服务,分享并分析了新的概念--Container as a Service,着重讲解了微服务支持和DevOps,并谈及了容器服务解决了哪些问题,最后介绍了Docker的最新发展趋势. 直播视频:点此进入 PDF下载:点此进入 以下为整理内容: Docker编排技术 大家都已经了解了Docker是什么样的技术,Docker是标准化的构建.交付.运维