幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

华为云发布冷启动加速解决方案助力Serverless计算速度

  摘要:本文介绍了华为云对冷启动优化这一业界难题的探索之路,创新提出了基于进程级快照的优化方案。
  作者信息
  子游:华为元戎高级工程师
  平山:华为云中间件Serverless负责人
  琪君:华为元戎负责人KeyTakeaways冷启动(ColdStart)一直是Serverless领域面临的优化难题之一,华为云创新提出了基于进程级快照的冷启动加速解决方案,致力于在用户几乎无感知的前提下,有效提升应用的冷启动性能;特别的,Java应用冷启动速度慢的问题尤为突出。本文以Java场景为例,介绍华为云在冷启动性能优化方面的探索历程,并揭秘90性能提升背后的技术实现原理。文末我们也提供了QuickStart,帮助用户更快地上手该新特性。一、问题引言:Java应用冷启动速度面临巨大挑战
  Serverless应用启动时,都需要先进行初始化。其初始化时长一般取决于应用本身的属性,如业务逻辑、编程语言等,其中Java应用的初始化过程通常是最慢的。以下基于一个典型的Java应用,对其启动时延进行拆解,各阶段耗时分布如图1所示:
  图1:Java应用启动耗时分解
  其中,端到端冷启动耗时可分为2大部分:平台侧时间:
  主要包含执行环境创建(如容器启动)、执行环境初始化(如代码包下载、部署)等准备工作,此阶段最多是秒级响应,在冷启动整体耗时中占比很低,通常不到5,平台侧也支持一些优化方式,将耗时进一步压缩至毫秒级;服务侧时间:
  主要包含应用框架启动(如构建SpringApplicationContext)、业务初始化(如业务数据初始化)等动作,此阶段耗时一般较长。在本例中,应用框架启动耗时占比约30,业务初始化占比约65。由此推断,该阶段执行的动作是Java应用启动慢的核心所在。
  Java应用启动慢的根因其实也不难理解,主要有:框架复杂:Spring作为一个企业级的框架,为了支持广泛的应用需求,存在大量的可配置和初始化逻辑,并通过复杂的设计模式来支撑这种灵活性。例如,一个springbootweb的helloworld,依赖的class文件就多达7404个,见图2;JVM的一次编译,到处运行:类加载时,查找类、校验类的开销会随着应用复杂度而增长;同时,在应用刚启动时,方法还没有完全被JIT编译完成,因此大部分情况停留在解释执行,影响了应用启动的速度。
  图2:helloworld依赖的class个数
  因此,对于时延敏感型的Java应用程序,在突发流量下发生冷启动时,可能会导致用户体验下降。为了应对这一挑战,用户可以提前预留资源来减少冷启动发生的频率,或者对自己的应用进行性能调优,但是第一类方案无形中增加了用户的keepalive成本,第二类方案也有着较高的技术门槛且往往效果比较有限。二、基于快照技术的冷启动加速:华为云的优化探索之路PartI:站在巨人的肩膀上
  业界针对Java应用的启动速度优化已有一些优秀的实践,可分为以下几类:AOT:
  主要有GraalVM〔1〕、EJET等,AOT方案是通过在程序运行前,直接将Java源码编译成本地机器码,因为提前编译并不占用运行时间,以此来显著提升应用的启动速度,同时本地机器码可以持久化于磁盘中,不占用内存且可重复使用。但是该类方案在特定场景也存在一定的局限性,如GraalVM对反射的支持并不友好,在涉及反射的地方都需要新增配置;EJET虽然解决了反射的问题,但是其编译时间较长且不稳定,在复杂应用场景下也存在性能劣化问题。AppCDS〔2〕:
  AppCDS方案是通过在JVM启动时从JSA文件读取共享数据,省略了共享类的加载过程,提升JVM启动速度;同时,多个JVM共享同一个归档文件,减少动态内存占用,可以提升内存使用率。该类方案主要适用于类加载比较多的场景,在一般场景下提升有限,且其对共享类的支持有一定限制,如运行时动态生成类不支持共享等。其他针对性(Spring框架)方案:
  如LazyInitialization〔3〕、Scanningindex〔4〕等,前者通过懒加载的方式来减少启动时加载类的数量,一定程度上提升启动速度;后者通过在编译阶段创建索引,避免启动时扫描所有路径来进行加速。但是该类方案在Serverless场景缺乏一定的普适性。
  华为云FunctionGraph创新提出的基于进程级快照的冷启动加速解决方案,致力于在用户无感知(无需少量进行代码适配)的前提下,帮助用户突破冷启动的性能瓶颈。本优化方案直接从应用初始化后的快照进行运行环境恢复,跳过复杂的框架、业务初始化阶段,从而显著降低Java应用的启动时延,实测性能提升达90。PartII:快照方案如何优化Java应用启动速度
  当用户Java函数打开冷启动加速的配置开关后,华为云FunctionGraph会预先执行函数对应的初始化代码,获取其初始化执行上下文环境的快照,并进行加密缓存。后续调用该函数并触发冷启动扩容时,会直接从提前初始化后的应用快照来恢复执行环境,而非重新走一遍初始化流程,以此达到极大提升启动性能的效果。
  先结合图3直观对比一下优化前、后的冷启动流程差异:
  图3:基于快照加速的冷启动流程
  基于快照的冷启动流程,主要包含以下几个关键步骤:
  Step1:平台侧提前准备执行环境,并预执行初始化代码、保存应用快照,此动作后续统称为Checkpoint与图1对应,此阶段一般占总耗时的90左右。
  Step2:在请求到达,触发函数新实例扩容时,直接从应用快照来恢复新的执行环境,此动作后续统称为RestoreRestore耗时是秒级,相当于将数十秒完整的初始化时间(在图1的示例中)缩短至秒级Restore耗时,启动性能提升了一个数量级。
  Step3:(可选)应用进程从快照恢复后,执行RestoreHook完成业务状态的刷新由于ImageFile是进程运行时的快照,在重建进程之后,会涉及到进程持有状态的有效性更新。例如已建立的外部链接、加载到进程里的缓存信息等。故我们引入了RestoreHook的概念,提供手段让业务对这些状态进行刷新,详见PartIV。
  Step4:应用Ready,具备接着往下执行业务逻辑的能力
  特别的,容器本身也是主机上的进程,故本优化方案也支持容器粒度的Checkpoint,即对容器内指定进程进行CR,与传统的轻量化虚机快照相比,其精细化程度更高、也更灵活。其原理详见图4:
  图4:基于容器的CR流程在Source机器上启动微服务,通过健康检查和初始化调用后,进行Checkpoint,停止服务,生成进程快照信息;在Source机器上将进程快照信息和微服务所有相关依赖,进行压缩,加密生成内存快照包,并上传至云端存储。在Target机器上从持久化存储中下载对应微服务的内存快照包,进行解压恢复。在Target机器上Restore微服务进程;PartIII:快照技术揭秘
  华为云提出的基于进程级快照的冷启动加速方案,其核心技术依托于CRIU〔5〕,它支持对用户空间指定的进程进行冻结(即停止进程,并将该进程运行的所有上下文持久化为镜像文件),并在必要时对其进行解冻(即通过保存的镜像文件来正确恢复进程运行的上下文),其核心工作流程如图56所示〔6〕:
  图5:CRIU如何工作Checkpoint
  图6:CRIU如何工作Restore
  CheckpointCRIU首先通过操作系统的proc目录获取指定进程和该进程下所有子进程的信息,包含文件描述符(procpidfd)、管道参数、网络配置和内存映射文件(procpidmaps)等;CRIU接着通过Linux的ptracesyscall接口把一段特殊代码动态注入到该进程的地址空间,通过执行该动态代码,CRIU以UNIX守护进程的方式收集dumpee进程存放在寄存器里的内存数据;CRIU将所有进程信息都收集完毕后,再次调用ptrace接口,去掉动态注入的代码,恢复该进程的原有代码;CRIU根据收集的进程内存信息,生成多个以功能分类的镜像文件,并默认杀死进程,完成Checkpoint;
  RestoreCRIU解析Checkpoint阶段生成的镜像文件,并分析多进程的共享资源;CRIU通过Linux的fork接口重新构建、恢复进程和其共享资源;CRIU恢复所有任务的资源,但不包含内存映射地址,定时器,线程等;CRIU根据镜像文件重新映射内存空间,切换进程上下文,恢复进程的继续执行,完成Restore;PartIV:RestoreHook
  如PartII所述,虽然本优化方案能极大提升Java应用的冷启动速度,但是快照技术在某些场景也存在一定的局限性,较难做到对现有应用的全透明化。通过快照恢复后,应用的网络连接状态会受到影响,涉及到TCPSocket重连等场景,如服务注册、DB连接,分布式通信,消息队列等。
  这部分场景依赖应用本身的网络重连机制来更新正确,因此,本优化方案中也引入了RestoreHook的概念,提供手段让业务对这些状态进行刷新。
  RestoreHook当前已支持大部分主流第三方组件的重连,详见图7:
  图7:RestoreHook支持的第三方组件
  不难发现,RestoreHook需要应用本身进行少量的代码适配。为了进一步简化应用的改造负担,我们也进行了一种新的技术尝试,可以理解其充当了用户应用与BaaS之间的纽带,通过状态卸载等手段,对开发者透明,帮助应用完成状态的自动化刷新。这部分探索会在后续的技术博文中跟大家分享,敬请期待。三、效果实测:Java冷启动时延降低90
  我们选取了公司内部典型的Java应用,对其原始初始化流程、Restore流程进行了对比测试,如图8所示。测试结果表明,本优化方案将应用的启动速度平均提升了95,即使快照包的增大一定程度上增加了包下载、解压的耗时,但最终端到端的冷启动时延也降低了90。
  图8:冷启加速前后的数据对比四、快速上手:基于华为云FunctionGraph的简单实战
  华为云发布的基于进程级快照的冷启动加速方案,是一种性能优化服务,用户无需额外付费,只需进行简单的配置、少量的代码修改,即可享受到该创新方案带来的冷启动性能提升。
  下文基于华为云FunctionGraph,为大家带来特性QuickStart:
  1、登录FunctionGraph控制台,创建Java函数,并打开快照式冷启动开关
  2、(可选)配置RestoreHook,并在函数代码中实现对应的Hook逻辑
  3、函数发布新版本后,触发快照的自动化制作
  4、请耐心等待快照制作完成(5min超时时间)
  5、调用Java函数,体验快照优化后的性能提升
  五、总结与展望
  本文介绍了华为云对冷启动优化这一业界难题的探索之路,创新提出了基于进程级快照的优化方案。当然,本方案也并非十全十美,它依然面临着一系列挑战,如文中提到的应用状态刷新、进程级CR的精细化控制、多平台的兼容性等,我们也在持续探索、优化中。
  同时,FunctionGraph作为华为元戎内核加持的下一代Serverless函数计算与编排服务,致力于持续为用户提供方便、迅捷的Serverless服务体验。您可以登录华为云FunctionGraph控制台来深入体验,更多信息请参阅FunctionGraph官方文档〔7〕。后续我们将分享更多围绕通用全场景Serverless的前沿理论及其案例实践,回馈社区。参考资料
  〔1〕https:www。graalvm。org22。3referencemanualjavacompiler
  〔2〕https:wiki。openjdk。orgdisplayHotSpotApplicationClassDataSharingAppCDS
  〔3〕https:spring。ioblog20190314lazyinitializationinspringboot22
  〔4〕https:docs。spring。iospringframeworkdocscurrentreferencehtmlcore。htmlbeansscanningindex
  〔5〕https:github。comcheckpointrestorecriu
  〔6〕https:speakerdeck。comudzuraintroductiontocriu?slide32
  〔7〕https:support。huaweicloud。comfunctiongraphindex。html
  点击关注,第一时间了解华为云新鲜技术

升级类消费需求加快释放促进消费持续恢复央视网消息:商务部将今年确立为2023消费提振年,各地通过不断拓展消费场景,扩大智慧商店、智慧商圈保障作用,不断提升消费体验,加快释放升级类消费需求。上海:特色街区休闲文……暮色渐渐来临,家家房子亮起一盏盏昏黄的灯,多福屋顶上炊烟上升他们这一辈子陈红星去年8月暑假期间回到故乡的一天中午,没想到在频婆街上,我竟然见到了I。从小到大,我始终不知道他叫什么名字,这里姑且就以字母I唤之吧!离开故乡这么多……蹭上ChatGPT?2023年,百度的能力和野心摘要:游戏一方面也才开始,另一方面早就开始了(欢迎关注杠杆游戏)撰文张银银编辑欣欣然在中国版ChatGPT概念加持下,百度近期或主动或被动,让自己受到非常多的关注。……海上观青岛航线风光满目游客为青岛魅力倾倒奥帆中心往返海底世界旅游客运航线一经推出便成为青岛海上旅游的网红路线。这一海上旅游航线的推出,不仅实现了青岛奥帆中心和海底世界两大经典旅游地标的海上连通,也进一步推动了青岛奥帆……微软收购动视暴雪有戏了?微软宣布收购动视暴雪一年多以来,监管态度颇为不妙,同行也争议颇多。现在,为保住这笔687亿美元的行业最大交易,微软不仅向欧盟反垄断机构服软,还用一笔10年的协议换取了任天堂和英……谷歌支付工程师粗心大意,导致系统免费送钱谷歌支付(GooglePay)日前出现严重的错误,其系统自动向部分用户发放101000美元不等的金额,据反馈是谷歌工程师在测试时导致的问题。GooglePay和Apple……情谊绵绵只因三年前塔吉克族大叔请广东旅行团免费住民宿天山网新疆日报记者宋卫国4月3日,广州三十二号国际旅行社领队谢剑东发了一条9张图片组成的朋友圈,最中间的一张是他和塔吉克族老人的合影,周围8张都是阿克陶县塔尔塔吉克族乡的……相信读懂了悉达多你就读懂了人生文一霖我是谁?我在哪?我将要去向何方,我将如何寻找永恒?赫尔曼。黑塞先生写的一本始于佛陀叩问的书。但它讲述的并非是佛陀的故事,而是我们千千万万寻常人的一生。世界是自……七言诗咏黄槐秋来野寞百花零,坡上槐树独放春。植珠不高四季绿,冠大寒露花如金。蜂飞蝶舞蕊间客,文人骚客雅丛里宾。迎风经雨无所惧,入药可使病除身。悄开朵朵色金黄,迷得蜂……来厦度假温泉养生很热门来源:【厦门日报】升级改造后的盛之乡温泉渡假村,推出一系列形态各异的溶洞温泉。(盛之乡温泉渡假村供图)本报记者林健华通讯员黄静怡春节以来天气骤寒,泡温泉成为不……能量密度更高更稳定!新型液流电池有望弯道超车财联社4月6日讯(编辑黄君芝)近期,来自韩国科学技术院(KAIST)和浦项科技大学(POSTECH)的一个研究团队开发了一种可溶性高且十分稳定的活性分子萘二酰亚胺(NDI)。在……比特币是大赢家最近数据显示虽然欧洲和美国通胀都有降低趋势,而投资者的热情依然保持旺盛状态,尤其是在银行业趋于平缓的,更多资金还是集中到以科技股为首的美股中,纳斯达克100在2023年第一季度……
杜兰特33分难阻篮网遭雄鹿逆转垫脚被吹恶犯不满裁判吃T北京时间10月27日,NBA常规赛继续进行。在刚刚结束的一场东部焦点对决中,篮网队以99:110负于雄鹿队,新赛季成绩变成1胜3负,雄鹿队则取得开局3连胜保持不败。作为当……贾斯汀比伯的老婆海莉穿着泡泡糖迷你裙秀出了她的美腿PFWYSL秀场上,海莉比伯穿着泡泡糖迷你裙秀出了她的美腿,此前她表示将回应关于她从赛琳娜戈麦斯那里偷走贾斯汀的指控海莉比伯在众星云集的巴黎时装周上展示时尚。这位25岁的模特穿……记一分并罚100元!在鹤壁这20辆汽车违反禁止标线机动车违反禁止标线是指违反禁止标线通行、停放、不让行、非法占用车道等,如实线变道、在不允许掉头的路段掉头,禁止转弯的路段转弯等,都属于违反禁止标线指示。鹤壁交警曝光20辆……李沁林允意外撞衫,穿同款棒球服风格不同,后者内搭有小心机点击上方关注小丸子,获取更多有趣有料的时尚资讯和明星穿搭。春夏交接的时节,帅气的棒球服堪称服装界的救场王。不管是单穿或者混搭,随时就可以穿出不费力的时髦,尤其是对于女孩子……传家首播聂远演技惊艳,秦岚造型绝美,服化道成最大争议点听说最近有部新剧大家不知道该不该下嘴?一方面,帝后CP,令后CP齐聚,阵容强大,剧照服化道精美,似乎,值得翘首以待?另一方面,有观众又隐约有些担心,怕剧集再次坠入那……不是吧!阿sir!2000能买到啥相机?(续集)先谢谢大佬们的观看,上期1000元的相机推荐反响不错,遂有了这一篇2000元的相机推荐〔牛啤〕(假装有分割线)首先个人不打算推荐单反,一玩得少,二相对微单来说,不便……国外免税店只坑中国人?这都是小事,还有比这更过分的免税商店日前,英国希思罗机场免税店对中国顾客区别对待的事件引起了广泛关注。事未平息前,又有人爆料称,英国希思罗机场的免税店不止一家专门针对中国人。澳洲墨尔本免税店也有类似……性价比高的大风量除湿机让生活更美好的除湿机品牌相对于其他电器,抽湿机在市场上的需求不大,但是品牌数量却不少,像安诗曼、朗力信、夏普、格力、普力适、德业、欧井等。在这众多品牌中,该如何选择呢?在经过一番对比之后,建议选择国外……安兔兔发7月性能榜红魔7S夺冠前十骁龙8独占九席因为刚刚过去的7月旗舰新机辈出,所以上个月的性能榜单更加值得关注。现在我们翻回头去看,就会发现国产手机上个月在内卷方面又达到了新的高度,不但人均骁龙8、天玑9000这样豪横的处……轻松简单地听音乐BLUEAURABlue1一体机身边有不少朋友咨询我购置音响有何推荐?其中一位是女性Hazel,而且无发烧经历。Hazel的诉求好简单:预算有限,只求轻松听音乐,最好桌面摆放不占空间,易操作且简单,稳定耐用音……富婆金小妹二胎产后一个月复工!绿皮草太高调,素颜尽显硅胶脸24岁的亿万富婆金小妹已经实现了儿女双全,在一个多月前,金小妹生下了二胎儿子,大女儿斯托米已经4岁。金小妹凯莉的时尚感一直都很在线,而她这次也是透露了自己生完二胎后的不容易,产……联发科天玑8100系列,都有哪些手机好1hr年度中端旗舰红米k50今天看了下京东顶配K5012加512,2899元,超级值得购买,在2000元价位给了一个三星e4直面柔性2k屏幕,还能开启高频DC调光,手机包……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网