大家数位等待开箱已经等了几倍了是吧不数应该的话我应该是最后一位分享我里面分享的主题是多集群环境下使用专辅来加速镜像和人间分发首先我今天先自我介绍起来我叫秦国现在工作在蚂蚁集团并且是专辅来就下来的马天儿同时呢虽然我工作在韩州但我是一个低地道的大连当第一次知道特色衣在大连区当中我内心还是比较保险和激动说起原因呢其实也挺伪装的因为确实在这种公众媒体上面其实很久没有看到大连区我自己看到之后也被感情结果最后呢下一个呢给大家讲一下专辅来是什么专辅来是一个基于P2P的镜像分发和文件的发行同时呢专辅来在2017年的时候呢第一次开源我是专辅来1.0这时候呢其实已经被很多大地路的互联公司去做一个线上使用在2018年的时候呢专辅来成为了Sensei用的一个三寶镜像在2020年的时候呢专辅来成为了Sensei的一个特别品相比如说一个幅画相在2021年的时候呢专辅来1.0经过了大量的流化专辅来2.0其实正式开源这时候呢起金为止的话专辅来2.0的话其实已经发布了将近174 res并且呢Panel其实也来自各个公司同时呢在Sensei的整个版图当中呢在镜像加速这里面其实大家关注度可能没有那么高但是呢其实我们设计当中还有很多贡献者基本上都是对P2P技术感兴趣的同学当然呢其实在镜像加速这里面Gunfly可以是算作上是一个事实上的一个标准的解决方案有开连设计当中同样呢设计当中也不法有其他的前开源项目比如说之前Uber开了一个叫Kwarking的项目这个项目也是一个基于P2P技术的一个文件分发系统当然呢它也提供一个镜像分发但是Uber那个项目大概没有三年前已经用相对来讲不维护了同时呢它其实对于节点之间调度相对来讲比较简单并且对于异常情况的一些处理呢相对来讲的细致所以说呢其实做一次简单的P2P调度相对来讲还是没有那么难的做一次复杂的P2P调度同时呢能够维护一套稳定的P2P机群相对来讲其实还是比较复杂的通过也比较繁重下面呢给大家一个轻微点就是说我为什么要用粘出来我为什么要用粘出来去做什么大家可能就要有一个论其实呢举一个Pace当大家去拉旧这样子可能它团的关是旁边的地对吧这时候呢可能为整个流程比较熟悉的同学呢就知道它一开始可能会像这样我们一起换个token并且呢带着token将运气做一次查询拿到当前镜像的一个Manifest同时呢在客户关呢将有Manifest的一些气息呢拼接上真实的下来请求当然呢其实你的镜像中心的存储大部分都是进入非常清楚的比如说你的镜像的每一层的夹仔相对来讲都是从最小的存储去夹仔一个object这个过程当中呢其实如果你的整个机群的规模较大成一下比如说你像像我们比阿里机群这边可能阿里云加阿里这边可能每秒几秒分发镜像有样都能够达到将近100t的组合的时候当你达到这种规模的时候其实你的原站的存储相对来讲是不能够它的带杆是不能够支撑的有没有原站的带杆很容易被打满而这时候呢专出来就能发挥它的作品专出来呢相当于是利用你的节点之间的剩余带杆而去环境的原站带杆的压力重情况呢其实它的加速效果呢只是一个附带手当它满足两个条件的时候呢其实它才能达到一个加速效果第一个条件就是你的原站带杆是必须就是打满的情况下如果我只下来两个镜像的情况下其实它没大满成可能会更快一些第二个情况呢就是在你的机器内部pier to pier的节点之间的带杆要由于pier到你的原站存储的带杆就这种情况下呢其实你才大能达到一个加速效果但是呢其实很可能是就当中有些同学他可能本地去做一个PoC就是说他可能本地去拿两到三个节点去做一个P2P的就下架载这时候呢他们看到就是说我的速度可能没有变短这时候呢其实就满足了第一个条件没有满足第一个条件就是他的原站存储其实是没有给大满成一下去对比一个P2P的速度才会来讲本身就是一个名目接下来大家介绍一下Gunflat整体相的一个架构Gunflat分配次数的第一部分是manager第二部分是scaler就字面底下倒退器对吧第三部分呢是pier第四份是zpiermanager呢他主要做了个什么功能呢他主要做的是就是他是要去管理多套P2P集群之间的关系并且呢他的围固多套集群之间的稳定性来从首先呢从一个manager整体启动过程就Gunflat启动整体启动过程其实大家不要好理解就行就是说整个Gunflat集群启动首先他会启动manager启动成功之后呢然后再会启动scalerscaler启动成功之后呢他会他会掉manager做一次注册并且呢跟manager之间保持一个勤跳当这个勤跳断掉的时候呢其实他的钓对器的当前状态就会是个niacting这时候当前的一个掉入实力就在整个P2P集群当中被剔除掉了当然呢scaler启动成功之后呢就变成了Zpier集群的起动同时呢他也会进行一个注册并且去保持一个勤跳最后呢pier如果干个pier集群当中又干结点pier才进行启动他会定时从manager去同步当前pier最匹配的一组scaler掉入器的底置列表共后期pier去进行掉入实力第二部分呢就是scaler字面意思掉入器有些同学可能对bt协议有了解的同学呢其实可能知道bt协议呢在最初最开始的阶段呢其实他是基于一个中经化的tracker掉入方案也就是说他所有的节点我下载一切资源我都需要通过tracker去进行掉入分配我的开认感但是呢bt有个问题就是说bt下载还是变相公网比如说他的pier节点是不可控的他的pier节点可能是海量这种情况下呢他的tracker其实相对来讲复载就很高了所以说呢bt下载呢在后期的眼睛过程当中呢他会眼睛成一个bt加一个ps又是一个分布式的R7表再加上一个pier节点的信息交换去做一个分布式的寻视当然做这种分布式寻视呢其实他有两点两个缺点第一个缺点就是做分布式的寻视首先他寻视很慢就是说因为他要在pier之间去传递信息第二点呢就是说他无法找到一组全局最优的附解点去共当前节点去加载因为他选举出来只可能是局部最优的一部分附解点共当前pier就进行加载但是在专flat的场景呢其实跟bt场景有一点不同就是说专flat的场景他的pier数是可控的他不是面向国王他不是海量你一个p8R7你总共可能有第二个节点所以说他的pier是可控的在可控的条件下面专flat就可以接一个中心化的调舞方案去做他的p2p所以说呢Spider其实做了一个最简单的动作也是一个最复杂的动作就是给当前的pier调度一组全局最优的附解点共他进行去下载下面两个部分是pier跟cpierpier跟cpier其实他俩的功能是相同的pier跟cpier他都有一个主要功能就上传一个功能下载上传是什么呢就是说把当前pier已经下载了task他切分的pier分享给其他pier就是什么下载的功能就是说当前的pier相对来讲他可以被他可以从其他的pierpier之间去传递他的pier去下载他的pier最终把对应的pier拼接成一个完整的文件返回给扣转当然cpier跟pier之间其实也是有区别的他有区别在哪里就是cpier他可以被scanner调步器触发主动为员这部分呢其实就要管理一下bt下载bt下载呢其实我不要打理不了解就说bt下载不管你的pdb机器当中有多少个节点你的节点轮轨有多大你的任务是如何切分的如何传递的你都需要有一个发布资源的节点有时候你的pdb节点当中必须有一个资源节点这时候你才能去下载它具体的内容但是在joinflight当中呢其实对于他的pdb机器呢他的资源节点其实是在pdb机器之外有时候他的资源节点是在比如说镜像中心的存储再比如说你的一些文件存储对吧然后呢所以说joinflight就需要有一个节点去进行回源作种这里面呢回源作种呢有CDPR没有CDPR呢就像你如果有CDPR你可以让joinflight的所有的回源流量都是从CDPR进行发起所以呢用户就可以讲你的CDPR部署在一些像我来讲网络发生比较好的节点还有一些机器能比较好的节点这样的能让它第一次回源加载进可能快速所以说呢就是pdr跟CDPR这些区别这边呢从一次pdb的一个简单下载流程给大家更提感的描述一下pdb的它整个下载功当中它的流量是如何分发的首先呢joinflight试图关系统下载呢应该是很多的它有一些比如说镜像挺主要的对吧可能有一些就是容器相关的一些不然的对吧还有一些比如说rtbcrdfs协议证当然还有一个在最佳的我们joinflight的一个子像叫nadas后面我会讲到它是做一个镜像栏区加载首先呢不管到client的玩意儿是什么它都会从pdr关的把流量结获结获成功之后呢它首先呢会向scatter调一次注册注册成功之后呢scatter会判断当前的task是否在整个集群内是第一次下载如果是第一次下载情况呢它会出发签的pdr去进行一次回源同时呢pdr跟scatter之间会建立一个双向主建立双向主成功之后呢scatter会进行一次调舞调动之后选取一组最优的复杰点反过一个当前的pdr去进行加载这时候呢pdr会并发的从多个parameter去下载不同的piece当然这是对并发的情况同时呢每下载完一个piece呢它会把具体的信息上报给scatter动下一次调步下载的时候调步时当它完全下载完整个任务之后所有的piece之后它会把这些piece拼接成一个完整的task反过一个当前的复杰点并且呢给scatter上报一个成功的结果这就是一个pdr一个简单的一个加载流程正面呢是比如说你的pdr在下载资源的时候每一个piece的时候它会上报一些信息对吧在上报信息供应当中呢其实对于调步器来讲它就是在组建一个P2P的透不结构当然这个透不结构在早期的Gunfire Scatter的版本其实是一个硕状结构这个硕状结构有两个缺陷第一个缺陷就是它只能保证表示一个当前节点从单一副节点进行下载就它不能表示一个描述一个并发的情况第二个原因呢就是说在你的并发量就大强的下载其实你的数的成绩会变神变神的话其实大家可能想到就是说它可能影响到你的下载比如说你的下载会出现常未现象当然也可能是你原战会报错当然你的错误传递相对来讲会变半当然呢在经过一个大乱分的优化之后呢Scatter变为了一个带个带个结构有一个有效的换图的方式去表示它的P2P的一个透布结构有效的换图呢首先它的优点在于说我当前的P2P表示从多个篇子就进行加载第二个优点在于它无缓无缓这部分呢其实就要细想一下因为在专户P2P网络当中如果假设P2A它需要一个P死它会从P2B去下载P2B呢又会从P2C去下载P2C如果你调度回P2A的时候它就形成了有缓状结构这时候A、B、C都没有当前的P死所以说它永远下载不到资源所以说呢它会使用一个有效无缓图的方式去表示下载呢也会有整个它的有效无缓图跟数状结构之间的一个数据对比比如说它会对比一个节点的平均大概6率这边呢是专户P2A的整个一个进降加速的一个过程首先呢它在构建进降的时候呢它会构建一个标准的OCRV1进降这部分呢专户P2A是不设计的在我们一起启动的时候呢专户P2A呢会把容器的每一层当做一个task然后在整个P2B网络当中进入分发去下载这部分呢其实就是之前之前阿里里面同学帮忙做一个压侧这个压侧呢其实就是一个数状结构跟一个图状结构之间的区别就是说首先呢它相当于它比主要的数据是平均节点带宽认诡这是P2B当中的一个很重要的指条就是说只有当前P2B集群每个节点带宽显示带宽都利用上才能发挥中间整个集群当中带宽的实物相对两样比较优一些然后呢蓝色头呢其实主状图就是当你去用个数状结构其实P2B的平均带宽认诡是很低的当变成一个图状的结构呢其实它的平均带宽认诡是有大量的提升基本上是提高的不对当然这是在可能大家看不太清楚这是在五个并发十个并发一百个并发就该是五个并发的情况下下面呢就要讲一下张弗莱的一个字项叫nadoxnadox这个项目其实他才是能够进向真正的快速加载的一个项目nadox这个项目主要做的是什么是一个进向的安区加载有时候你的进向可能有十个级但是九个级的数据你都不用所以说我只加载其中一个级数据我就可以把这个进向启动起来当前nadox呢其实已经支撑了每日百万级的一个加速容器的启动当然呢nadox其实现在共同一起研发的基本上就是来自三公尺的一个内核团队一个是我们蚂蚁一个是阿里还有就是紫园跳龙链有火山疫情里面的首先呢nadox他总体加速过程呢其实他是从构建时就开始做的他构建的时候呢他会把O311的进向转换成nadox的一个进向你可以把nadox的进向当作一个纸园电器也就是说他会有一个元数据层然后会有多个数据层多个数据层呢相对来讲他又会在逻辑上去对他进行一个逻辑的创造结构当容器启动的时候他首先加两个元数据层然后呢他会跟据你容器的独请球去命中具体nadox具体是哪一个创作然后在转化程序进向层的一个乱子请球去做一个相对来讲比较快速的一个按需加速当然nadox他也适配了现在场景的一些运行时当然最多的就是乱随大家可能用得比较多乱随乱随的场景呢nadox相当于是在启动的时候加两个元数据之后通过fuse将纸园电系统放得到人气当中然后进行一个按区加载第二个场景呢就是安全运气场景比如卡塔卡纳纳当然也是我现在的场景我现在的场景其实就是卡塔卡纳纳卡塔等下那儿他是做一个安全运气有的他是相当于一个虚拟化的场景就这次QMU有一个虚拟化的场景正场景的他会通过vort.mns跟nadox之间去进行通信并且把他的独请球那转化成创作请球最终呢在转化成一个乱子请球做一个安全下载最后呢就是一种高性能场景高性能场景其实他主要是利用的vort.mns原生的一个指读文件系统EROS这个也是他作者也是阿里里面的银块合作团队的一位同学利用EROS去解获他的独请球然后团队的nadox去进行一个安全加载那就是nadox从整个镜像构建到运行时的一个流程图首先呢nadox上面已经讲了nadox会把OCI v1就讲转换成一个nadox的车匙就讲将它扶植到这样的仓库然后呢在运行时呢他通过nadox snap shutter转发流量相当于具体如果我读到哪一部分相当于转化成nadox一个创作然后再带着一条pdp集团当中进行加载这里呢当然nadox也可以直接去这样子依据加载为什么还有一个pdp呢对吧大家可能比较好奇因为nadox有一个问题就在里面nadox他可能会把你的qbs做一个放大就说你原来镜像可能只有10层对吧转发的nadox镜像的时候比如说你只需要加在100到处去但是他会切分比如四兆一个创造或十兆一个创造他会把这100高处去呢他的qbs相对来讲就会提高比如说你的连这样创作处也会附载一位提高所以说呢是需要一个pdp集团去做去挡这份qbs但是呢其实在你小规模的枪下直接nadox其实效果可能比带pdp好一些但是在真正大规模的场景比如说现在的可能用这套方案的公司相连的不论公司还比较多起来像比如说阿铭对吧像阿铭还有自杰还有比如说很多公司基本上都用的pdp再加nadox这一套下面看一下整个一个性能压测这是一个nadox加招出来的一个单机的性能压测我们用的是四种官方一点镜像一个人动的無比passing还有rest首先呢第一个助状图是ocve镜像的容器启动时间当然它远站是相同的比如说我们只需要比较它之间的差别ocve的情况下它需要把镜像满加在然后进行启动所以说它启动时间相量比较高下一个呢就是nadox做一个冷气动这时候呢可以看能气可以基本上会节约将近三个这儿上的时间在下一个呢就是nadox加招出来的一个冷气动nadox加招出来的一个冷气动呢其实相来讲可能比单机nadox能稍微延迟一些但是在大规模场景下是需要什么用的所以说呢它现在俩讲其实延迟的部分是在Nadox的吊鼓以及流量分发的过程当中后面呢一个就是命中了p2p的一个纸路的p2p开始也就是说命中了你们远远远的p2p的一个产品换车的在后面一个就命中了p2p的一个local p2p开始也就是说它命中了p2p的本币的climate开始最后一种呢就是nadox的一个命中nadox本币的开始相来讲启程时间表快了这个p2p就比较有意思了就p2p这样看的台湾我生不冷静现在最热的东西我不知道大家因为要了这样一个场景就有一天坐在办公室里开心的写着干嘛突然所有的信息所有的新闻都是差的GDP所有的新闻都是AI所有的新闻都是大模型对吧当时的然后呢我们之间同事就该散播焦虑咱们什么时候被替代什么时候没有工作当时我也自己想一下最后想出一个结论就是什么打不过就加入最后来讲如何加入进行当然呢在大模型场景先分配两部分第一部分就是训练第二部分是推理在推理的部分其实joinfly是能够发挥一个很大的优势的首先推理的部分是需要满家在当前的模型的第二部分呢就是推理一个人当中他的模型文件很大第三点呢就是他具有并发型所以说呢对于joinfly他就可以利用他节点之间的剩余待关就缓解他的人战的压力在这一点呢其实现在其实我现在不能透露只能这么说一下就是说现在可能大家知道了非常知名的差的GDP像类似的国内的产品其实用joinfly去做一个模型和达子这其中呢其实joinfly最主要的让我说的是什么就是去集成开源社区开源社区推理模型放假当中其实有大部分有三部分第一部分就是贪色附绕色领第二部分是穿色蚊第三部分是套纸色蚊这三部分呢其实joinfly相对来讲因为他的大模型的存储基本上选择都是对象存储所以说呢其实就joinfly的发布余地其实现在的情况其实已经可以集成joinfly去做一个P2P的加速但是呢用户都喜欢这种提干好的一些一件部署的一些对吧必须要太复杂所以说我们未来最重要的一个规划就是要跟这三个社区深度集成比如说我们会以paradean的方式去集成到上面三个社区要模型腿底部分也能想知道P2P带来的优势这幅图呢就是joinfly一个多集群的部署价格图比较扣体啊多集群也可能看到这些是一地可能是比较独立的带加上去的首先呢多集群状态下来joinfly是需要一个单独的manager而且呢这manager是相当于管理多套P2P集群的管理关系然后每一个单独的集群呢它都会有一套调度器isbender还会有一套先pierre并且呢会有多个节点的pierre这时候呢多个节点的pierre相对来讲呢其实它供用一个内部的调度器比如说它相当于网络隔离的情况下它是不会靠网络这间去调度pierre的当然这不是一个固定的认识就说有人同学感情你在公司内部去做一个继续的P2P环境部署的话其实是需要结合自己公司内部网络环境下一个最后一部分数据压缩数据这一部分呢是火山引擎同学头条因为火山引擎同学帮忙去压了最新版本的一个压缩的性能数据这性能数据可以看到我们用了两个官方的镜像第一个只能这样子大概500张第二个只能浮浪大概30G左右可以看到在OCRD的场景随着并罚增大它的容器启动速度是体高而且会达到一个很好的值然后呢再看张徐蓝的场景其实他的容器启动速度整体启动速度这点是启动速度是算的最后一个容器状态软的时候它最终的时间所以说张徐蓝呢其实就可以稳定在一个很低的一个标准再后面看一下张徐蓝跟NadusNadus其实也有一定加速值我大家录影看起来没有那么明显是因为这个OCVE确实下载太慢了Nadus这边呢其实还有一个原因就是Nadus跟他在Flower这两个镜像相对来讲因为他是官方镜像所以说他做的比较好的些有无数据没有那么多可能他只需要加在70%的80就可以启动但是呢我们内部对于硬物容器来看的话其实硬物容器它的容量数据能将一有百分之五受到棋手所以说这时候Nadus有很大的防队优势这边这幅图是张徐蓝跟OCVE之间进行仓库原战存储的一个带宽峰上有一个比较可以看到病发增高的强化价它的原战存储的带宽峰是一直在增大而张徐蓝就可以维持在一个很稳定的一个敌的处因为在张徐蓝其实在最理想的情况下张徐蓝可以让整个P2D节点不论多大规律只有一个节点进行会员这就很厉害也没那么厉害就说他可能有一个节点进行会员但是我们在生产当中其实没有这么使用因为生产当中你病发量比较大我们可以让两到三个节点进行会员这样它可以承担在P2D集群内的负载如果单一节点其实这个节点在P2D集群内其实它的负载相对来说也是比较大最后一幅图这幅图是原战的一个存储的一个带宽流量可以看到OCVE的情况下它相当于每一个景象不要满家在到江藏库的在装飞了其实也是可以维持一个很低的值我这边大概PBT的内容就结束了大概讲一下装飞被来的两个重大规划第一个规划就是装飞这边后面单机的透感其实会用WASL去重启如果现在的单机透感可能性没有那么好一些当然其实也是可以用的跟WASL去做一个重启提高一下它的性能第二份重要的规划呢就是跟咱们达利宫徐子澹教授的反对一起去做一个调度的一个图学起的一个智能调度这份后期我们要会去发一个论文发一篇顶课然后大家一起可以后面可以看看就系最后呢欢迎对镜像加速感兴趣的同学关注一下我们的项目并且呢我都能挡住这二位妈的手并且呢最后也给大家带过货我们在8月份会在杭州举办一个PCD也希望关注的同学可以到时候有兴趣去关注一下我分享到这这个原因大家可以提起过这边很细然后我不要关心就是这个镜像加速是不知道有什么场景的吗比如说是集群接下来到什么规模才适合用这个加速镜像加速只要人家在关注达那那就可以加速比如说中常的话像我们的用户相对来讲比较少一点的比如说他单个集群可能节点能在1000个左右这时候结束适合用户相加速但是对于单个字的安区加在来讲其实他是不需要去看待关的就是说你只要你只要镜像有用人数越强下来他就可以安区加的就可以去做一个快速启动他不需要即使你的规模很大还有很小他都是有安区加的对吧就是说他都会启动让你去启动你的快速他以为这是我可不可以用多少这样的仓库来解决这种多少这样的仓库对多少这样的仓库你的存储是一个吗你多少这样的仓库你不说他没了他说他们是有时间和存储吗相当于多个存储对吧多个存储那他的解决方案就相当于一个深夜的解决方案对吧他可以多个连站把他加速这种情况其实也可以没问题你要容量可以对吧没问题只不过P2P他相当于是利用了你节点的显示带方案去做一个加速比如说你这部分可能用不到对吧所以说我利用这份显示带方案去做一个加速如果多个节点其实你还是需要一定工作而且需要一定资源对吧我们的图案在生产方案中有没有关于iPv6的时间有的我们支持iPv6我们天空支持iPv6而且我们还要支持P2P的一个双向TLS都支持的如果是一桑iPv4一桑iPv6这种这种没机器这种没办法支持这种有iPVT的对谢谢我想问一下那个通过Schedule来划负机群的话是不是会有上限呢就是当节点继续节点数量是过多的时候它都负责Schedule进行调度的话那它的一个Schedule上限是多少呢大概一年主要是你的节点其实它是仿佛固定了Schedule它的它的负载是根据你的它相当于根据一个一致性哈欺比如当天它是根据一个TASCLE ID的一致性哈欺比如说你就橫向负责Schedule就相当于说当节点数量越来越多的时候它可能有新生产一个Schedule对相当于它去做了红铁固定OK那么感谢今天报告说到精彩音价