Serverless 如何做到快速发布?微应用平台技术实践( 二 )


1) 该类所有的实例都已经被GC 。
2) 加载该类的ClassLoader实例已经被GC 。
3) 该类的java.lang.Class对象没有在任何地方被引用 。
如此,基于YMAP(优酷微应用平台)ClassLoader的隔离,有新的应用代码部署的时候,采用新老classLoader的替换的方式,回收老APP的资源,就能做到不启动容器的情况下,做到应用的重新部署 。

Serverless 如何做到快速发布?微应用平台技术实践

文章插图
YMAP(优酷微应用平台) ClassLoader
Serverless 如何做到快速发布?微应用平台技术实践

文章插图
以上就是YMAP的classLoader的架构全貌,我们在多classLoader基础之上,增加一些更贴合业务的落地方案 。
1) 原生支持spring的全能力,方便开发;
2) 中间件(DB,cache)以及基础能力无需重复接入,一站支持,让业务方只关心业务代码;
3) 支持二方包自定义扩展,增加业务开发灵活性;
4) 支持资源隔离(CPU和内存隔离),支持混合部署,提升机器利用率;
5) 快速动态部署,20s以内 。
资源隔离
Tomcat的多APP部署一直没有没有被推广的原因之一,就是安全性太低了,多个APP之间会因为资源划分的问题被相互影响,那么如何解决资源隔离问题?
我们引入了集团AliJdk的多租户能力,复用的是linux的cgroup的能力,这个方案可以让单台机器上的部署的多个APP之间资源(内存、CPU)相互隔离 。
Serverless 如何做到快速发布?微应用平台技术实践

文章插图
常见的资源隔离问题主要表现在多个应用对资源的争夺,比如APP1出现了死循环,导致耗费了整个机器资源的cpu,其他应用无法继续获得指令集的执行时间 。以及常见的内存泄漏,也会导致其他应用出现不可访问的情况 。
另外我们做过一个调查,发现多数的长尾应用在90%的时间,机器资源都是浪费的,如果给这类的应用采用硬件分离部署,会过多的浪费主机资源,不如采用多租户的方式,单容器部署多个应用,可以大幅提升资源利用率 。
ymap引入了多租户能力,通过JVM的虚拟化/资源隔离,以支持容器的多租户,让多个应用可以同时部署在同一个容器而互相不受影响,从而可以更大程度的提高资源利用率,降低单应用的部署成本 。
多租户能力的引入,解决了以下痛点:
1) 资源隔离能力,包括IO资源和CPU资源隔离,以及mem隔离;
2) 高密度部署,降低应用部署成本;
3) 减少进程间沟通(序列化开销),打通共享能力 。
快速部署
YmapClassLoader 帮助我们解决了技术上动态加载能力,同时我们也配套了相应的APP打包编译系统,结合aone的构建和git代码管理能力,方便开发者快速变更和部署,从开发提交代码,到编译部署,再到测试反馈,提供一站式服务,整个过程控制在30s以内,方便开发者快速验证,无需耗费过多的时间再部署发布上 。
Serverless 如何做到快速发布?微应用平台技术实践

文章插图
 优酷微应用平台的生态
YMAP(优酷微应用平台)的设计初心是希望实现类serverless的微服务平台,让开发者只关心专注于业务逻辑:
在设计上,基于低成本、安全、高效为关键目标,为研发赋能;
在开发上,支持一站式发布体系,从开发,测试到发布,全部可视化支持;
在容器上,动态部署能力,多租户隔离能力,以及基础服务扩展能力,提升应用部署效率,以及资源利用率;
在运维上,帮应用实现智能化运维工作,应用自动接入监控报警,一键快速扩缩容,应用运维大盘以及微服务日志自动云端化可视化等,提升应用的运维效率 。
Serverless 如何做到快速发布?微应用平台技术实践

文章插图
微应用平台服务架构
Serverless 如何做到快速发布?微应用平台技术实践

文章插图
微应用平台业务效果
Serverless 如何做到快速发布?微应用平台技术实践

文章插图
YMAP(优酷微应用平台)基于serverless的思想,让应用服务化,提供最小逻辑单元,让业务快速开发落地,同时也兼顾资源效率的提升,采用1:N的部署方式,进可能的提升主机利用率 。从开发赋能到运维赋能,为业务方带来更低的成本,更灵活的应对方式 。




推荐阅读