开发者学堂课程【云原生最佳实践案例:实战案例—流利说】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1052/detail/15619
实战案例-流利说
内容简介:
一、实战案例-流利说
实战案例-流利说
今天讨论的主题为流利说在基于容器服务的一些云延伸的实战和实践的一些事情。
首先先简单介绍一下,公司是纽纽交所上市公司,一家卓越的科技驱动的AI教育公司,口号主要是赋能每一个人,实现最大潜力。
因为主要公司是AI,那就会有很复杂的业务,有AI老师,有的业务模型,大家在各个应用商那里可以看到刘教授很丰富的一些APP,就现在主要的APP主要是有如PPT上所示,就会有业务侧,会有的算法,会有中台,算法较为复杂,会有dtsb boat各种,所以是一定需要用到云原生和弹性的一些事情,也是团队需要去做的一些事情。
现在就是人说其实很特别,他在20前一段时间或者说去年,全站完成了从aws迁移到阿里云,所以说就是说是一家生云长云所有的应用从一开始就基于云的弹性做的研发部署测试,包括的AI,所以为什么cloud团队就并不是那么传统的off团队,几乎所有的把英特尔直接定义成全部都是后端研发,以70~80%的工作量全是写coding,以极少数的工作去做一些up或者简单up的事情。接着这么多年对于云的一个理解,当需要的时候打开水龙头它自然就来了,弹性极致的弹性,极的效率,不过对于的业务来说,他们需要的是业务交付的效率和他们口顶和业务产品运营一些效率。
对英特团队来说就是所有的是sars,所有的生产测试流程的一个效率,这样时间定义的那 k8s自然给到了所有机遇,云的一些特性。当然要去解决三个大的问题,一个就是关于业务架构的,还有一个就是的部署架构,最后会牵涉到一个成本问题,因为需要再用最少的资源跑这么多的服务提供,提升业务的稳定性和一些工程效率的事情。首先说一下的一个AI训练模型,这个比较有意思,是上个月完成了从原先的也是可以把s但是不是用的阿瑞纳这套架构的一个体系,刚完成了所有的转换,几乎现在就把所有的算法所用到GPU集群,全量切到了基于阿里阿瑞纳的一个平台的开放平台上面。
就为什么会签上来,主要是因为算法。其实他们不愿意做这么多事情,他们需要的简单,他们需要的一个job跑下去,马上就能把它building它的模型训练到它的推理做掉,并且它有一些训练推理,会有GPU会有CPU,所以这需要一个有强命令行,让科学家的算法工程师基于get left有更简单的一个计算的工作量,它变成一它它的小电脑,它在MAC上一个命令就把所有的问题解决掉,是这样去定义的,这所以最后在跑了一段时间,最后选择了,而那基本上就相对还是比较简单的。
还有一个前端可以看一下大概模型跑什么样,后端的话就是调一个arena,就是flow各种test flow的job在那跑,算法基本现在每天全量的叫的已经全在上面跑,基本也很稳。
这还有一个就是比较好的是一点,就当不需要计算的时候,集群会马上缩容量,有job的时候马上扩容开始跑,所以说GPU算,但是但贵前面提到第一点是弹性嘛用多少跑多少,还有一点就是有多卡有单卡,还有一点就是有些算法他们需要多卡一起跑,或者把一张卡切掉一起跑,这些都是有的,包括实时的一些或离线的一些所以这个就需要keep,那个如果原生的keep艾特斯,它其实基于device planting,它并没有做到那么好的,它只是按卡来做,这个正好在阿里这个有有能力,它根据一张卡把它像CPU的调度一样把它切开来,这个是比较喜欢的,因为需要控制强控制营销成本和提升公司的效率问题。
第二点再说一下GPU的利用率,就前面提到的一点,基于这个去做了很多去教会业务,去教会的算法工程师怎么去做,有一些jail平台本来的一些事情。
业务架构,业务架构相对就是互联网公司,嘛波峰波谷都是会有的,毕竟是一家教育公司,其实不可能每个人24小时都在学英文,所以会有正常的波峰波谷,接着还要需要做service的一些事情,因为服务其实有些混乱的需要去治理,需要去解决,需要提高稳定性,还有多a单adc,甚至跨域的一些流量切换工作,这些要去解决的。还有一些服务的部署快速交付,还流量切换,资源合理利用的一些事情。那怎么做的,这套是整个的一个核心架构,其实已经把很多边角料的东西全部抹掉,因为有很多大量的自研的东西,比如说大家可以先看左边这边,左边这边全部基于派克做的基础EC ecs的那个音面具的打包,那所有的变更可以追溯,可以知道它代码的变更,大家有兴趣可以了解一下。 这样上面基于VR做的,可以把可以把a集群的所有的resources copy到b级群,因为是多g的一个架构。
第二基于telephone去管上面的一些,比如说BBC,古代s基础集群长什么样,这样可以把所有的基于加上CD的业务的部署情况,那这样加上最底层其实用到的就是比特赖。就是当所有的变更都在bit里做的话,所有的东西可追溯可回滚,可以知道在什么时候做,天然的有一个审批链条,剩下一块就是中间一块核心,大的网关对公网网关是控,暂时的话还是基于阿里云公有云的一些奥迪斯概念的能力,阿里就ess那个产品,自然的基于派克打完包之后,当有流量的时候横向扩出去,没有流量的时候可以缩回来,但做到的是扩充介绍尽量先别收回来,因为怕有一些长链接的事情。
现在基于下面的话,实际是多个class集群,有一些是单个ac的,有一些是可以music class就多个AD的。至于里面在去年的时候上行了Excel,并且fix了一点点bug提到了社区去,这基于一又做了一些事情,就是SAR报表。据所有的SCI去控的x log做了很多SL的报表,知道容器外就是容器外部流量进来的大宏观API的一些指标数据和容器里面整个集群里面的一些指标数据,这样基于云厂商给到的所有能力,把的弹性做做到提升业务稳定性。之后,最右边的是的可观性的一些东西用的。监控告警主要是普罗米修斯,当然普罗米修斯其实如果展开说也能说的很复杂,那么基于普罗米修斯做了大量的拆分,数据同步异步计算出报表,还有sls,主要是日志服务剩下就是tree性,这块用的是open才能处理当现在还在还在不停的推进这之中,这比较是一件比较费时间的事情。
因为觉得open才能卖出,未来是可以把open service和和那个全部整合到一块去的一个东西,而且本身它是把日志监控,包括tracing可以做一件事情,提升一个服务一个很丰富的视角去判断这个服务是否健康,是否可能性比较好,甚至别的。所以主要还有一点,其实前面说的就是那前面有一个就是生产集群的部署,业务流量可以始终切换,因为前面说到是有两个集群,要从a级群把流量切到b的,形式那本身控其实不好做这件事情。
那就自研了一个空的English control了,他去不停的watch,就是cookie pus,messing glist annotation的变化,就把那段如果有任何变化,马上塞到控的一个API网站API的ADMIN的那个 Api里面去,这样在两个集群的时候,自然的可以监测到所有后的,如果a级群出问题了,马上可以切换到b级群,配合着业务有一些一球本身的垄断降级的能力,那提升大大的提升了业务的可靠性和稳定性。上海另外就是多情部署,基于奥特斯概念group,每个ess每个集群都有不同的自己的奥特斯概念,有一些业务它需要绑定,ok给他固定的一些资源的机器,比如说的算法还是比较挑机器的,那需要确实需要去固定住,包括一些promise的东西或stable that的东西。 剩下就是基于realize做到了从a级群把所有的资源可以在短时间内copy到b级群,配合着控的大网关切流量流量再切换到一个别的群群,就是大家如果发挥想象力的话,其实跨地域的事情可能也能做,但是难点应该是在数据库上面,这就基于RCD做到了全站的。
Get up100%附在阿罗CD里,因为刘宇说这边是基本上99%的业务系统全部是跑在k8s里面,接着基于instill完成了服务网格和业务的治理。
单说一下弹性,因为刘毅说刚开始其实也不是都在p8SB,只是大概好像16年17年就开始逐渐朝k8s转。 None。Pps本身和云厂商最好的结合其实是ca class or to scanning,它整个逻辑其实没有那么复杂。当看到一个port和一个资源pending的时候,他去刻了一下场上的API,所以在云厂商的API对于弹性来说是至关重要的。刻了一下这个 API之后,看到需要机器,需要资源,API就会到机器池里面ecs那边去谈一谈出来,谈完之后通过一些营机器自己的盈利的操作,加上打包,本来一些事情把机器塞到那个集群里去,这样自然的完成了一个一个no的worker的node,加入到一个苦耐的class里面去。 所以这个是最base的一个弹性能力,这也是特别喜欢的一个东西。
当机器需要的时候自己谈,如果当某一个node它挂掉的时候,它自然会去补,其实大大降低了运维成本,剩下一块其实就是成本的一些事情有了弹性,那我要用的时候扩,我不要用的时候我缩嘛还有一块就是的成本,成本怎么做一个I resource uh Receive instance。就先付一部分钱出去。
但它比较复杂的有三种付费方法,他富有没有钱出去,我拿到比较好的折扣,这是一种。
还有一种sport,就没有整个测试环境全部跑到了sport集群上面,除了那些带状态的,但是没有跑的测试环境全部跑在sport的经营上,包括有一些算法的一些计算逻辑,也在朝sport上跑。其实就是按量付费。
还有就是阿里云今年推出的cvn plan,它是一个打包的方法去购买,就是你有很多这些类型,我放在一个池子里我去购买。所以基于这个购买的方法,最简单的就能有一大步成本给拉下来。那所以基本上也会这样,就作为一个base的水位线,这是绝对可以预估出来的,你只要去基于普罗米修斯做一些定期的软微,有报表,这是完全可以做到的。 在基于sport做到业务中间的一个弹性,就不停的把它弹性,接着阿里云正好有个note grou,它既它支持aodeman和sport同时跑, sport不足的时候他去note的这其实非常友好的一个东西。剩下一块就是整个一些应用的弹性伸缩,用的hpavpaavpa但是没有用,不考虑PP这件事情,主要是hpa包括也上了在差不多也上了跨HP跨hba其实会比阿里本身上稍微早那么一点点,你会发现把代码阿里云放出来了,把框HP上线并fix了1~2个bug,剩下就是下面是伸缩的一些资源组,机器虚拟节电池,这个也在调研怎么把一些思维类似的东西给插进去,用大数据去跑。 先说一下大概做的一些弹性相关的事情,一个就是定时的伸缩,这个其实是可以做到的,基于所以为什么所有的监控数据是非常有价值的一件事情,且它其实是非常昂贵的,需要去发挥它的意义。
在定时当业务有需求的时候,估他怎么说去谈的时候,我先去把它配置好,这是完全可以做到的,而且对于k8c来说也非常友好,就是一个result。剩下就是custom hba,这个是自己写的。据promise里面的所有的matrix做到单炮的到底开多大,当pose到多少的时候去扩开来。
至于比如说你下游它好像延迟了,或者有类似那种队列,它延时那我去扩开,这这也是一种它怎么就是自己的那个HP胜诉还有一个 Resource come on,这个是也是同样也是基于mac可惜做到,可以推荐单个pose到底多少个麦,多少的内存,CPU,甚至于别的是否合理去扩,那后面正在思考一个问题,就是那既然单个破都搞定了,能做到一个水平的,它多少个破的,这个也是可以预估的, 因此的matrix其实非常丰富,是可以做一些东西的。剩下就是cloud save,class save其实就是平衡sport on demand,去不停的在跑,看到有云上有库存了,把sport补回来,这是上面做的一些自动化的手段。中间的话就是I的购买嘛 I实力加c cvn plan的节省计划,相对于固定节点池,大概预估可以降低60%的资源,也就成本能省出60%,就未来一些展望。
这个大数据。 大数据的话比如社区经贸spark的一些东西,link或crystal其实是有机会跑进来的,包括一些service的,它其实就是跑批, GPU能跑,大数据都不能跑,比如说这边的大数据平台基本是湖舱分离已经做完了,所有的数据全在对象存储上面,计算是基于现在还是简单的弹性ess在做,那未来考虑是不是要切到p8s上来,当然这个需要跟阿里同学一道做了,因为还是比较有意思的一件事情,现在就AI os,嘛我因为前面有大量的东西是基于 metrics和log去做的统计和计算,去评估你的业务是否是健康的,是否要帮他扩容,这个也是可以做的,包括SIS上面有很多feature可以直接用的,上海就看k8s和一些云厂商怎么去结合,嘛那其实就AI这点上面,它其实就有很多可以做device playing,它其实不是那么一个完整的东西,它切分上其实没有做得很好。 还有一些服务的熔断降级,他还需要网关去做,甚至于别的一些大数据的事情,所以这个是未来需要去做做完之后,去帮助的业务提升稳定性,控制成本,提升效率。云和团队的价值所在就两个字-效率,效率有成本、有稳定性有很多视频去做。
那主要的一个工作职责就是帮助客户在利用原生架构往数字化转型的过程中,怎么更好的去把阿里云容器服务产品一些思考探索,然后以及一些落地化的能力,更好的去在客户的实际的业务生产环境中去更好的得到运用,就是服务的其中这样的一家客户,这张图可能很多地方可能以不同形式的可能大家都见过,那可能真的说明昆明的case已经成为了云原生时代的一个基础设施了,那从最早期的有状态化的,包括最早期的无状态化的web、APP这样的一些微服务的一些应用,更好的可以在容器上去运行,那接下来需要做数据持久化的这样的一些ladies,jk、等等等有状化的应用,在整个容器上也得到很好的运用。
那接下来这几年可能更多的一些互联网客户可能会往这样的智能化的应用,AI以及大数据等等的容器化的探索,也有了一个很不错的落地。 那塔的报告的话指出到2023年有超过70%的这样的AI,集体学习的任务可能需要用容器以及surface这样的计算模型来承载,那并且它需要一个WPS的一个这样的一个根普通的微服务这样的应用一样的单位。那谈到了整个 AI那有别于的普通的在线业务。
这个 Ai对你这个容器化的运行其实是有特定的一些诉求的。那比如说它首先最底层的话需要去管理你的易购资源,那易购资源包括GPU,阿里的npu以及rdma等等这样易购资源的设备,那首先这些设备可以在整个容器服务的集群里面更好的高效统一管理起来。 那在之上的话,针对bat区内的AI类的业务的话,它有特定的调度诉求,那比如说最简单的他一组作业过来需要有或者没有,Nothing,那需要有个调度。那可能前几年可能更多的是说有三会有一些这种旁路调度器的方案。那在整个阿里云的ac k上的话,更多推崇的是说在新的斯弗雷斯framework的框架下,会把整个兼容AI或者大数据的整个调度能力的话,都会往的调度器的主线上去做。那通过这样一个schedule,frame的调度框架,可以原生的支持你普通的在线业务以及你的大数据或者AI在一个集群里面无缝的去兼容去使用。 那在之上的话,知道AI这样大数据的业务,它天然的需要大量的数据,那数据我怎么去支撑你前端顺利的无缝的弹性,可能需要把你的数据集怎么更好的去与你的算力更好的更接近,让你的数据能够更贴近你的算力,那所以开源的这样一个弗洛伊德的这样一个项目,可以帮助咱们更好的去把AI训练过程中需要的数据集统一的去做缓存加速,那这样的一个能力的话可以极大的提升你的那个整个训练的一个,数据的亲和性,包括得到很大的一个数据的提升。
那之前的异地的演讲可能大家提到了像类似于微博这样的客户,它都能够在分布式多机多卡的训练场景下,会有超过10多倍的一个性能提升的一个机制的表现。那最擅长的话,强调了有一层叫AI的任务作业管理的这个概念。那首先的算法科学家其实对整个k8s的课本历史的理念,其实这里面有很大的这种入门的一个门槛,就是你要熟悉k8s所有的很多很多的语义,那这里面制约了整个数据科学家里面的这样工程效率。那通过的r这样的一个开源项目的话,可以更好的去解放数据科学家的这样的一个生产力,能够让他去用简单的这种命令行的方式,可以去把AI的任务更好的跑在容器上面。 那随着越来越多的这样的应用,让库存的历史架构去跑,那它的整个容器其实已经成为了整个用户用云的一个统一的入口。
那云的最大特性就是弹性和按需。那怎么帮助客户构建一个这样的一个弹性的能力,更好的去贴近客户的业务场景。举个例子,那像微博去应对它的热点门事件,它需要在极短的时间内去扛几百上千倍的这样突发流量,那基于容器是能有这样的能力能够支撑这样的业务业务的特性 那比如说还有一些这样的一个训练类的这种业务作业,比如说spark或者tadeflow的作业,需要用云的更低成本的 sport,这样的弹性竞价的实力来承载。
因为这样的业务场景的话,taode随时销毁,对你整个计算任务训练任务不会有太大致命的影响,大不了重新跑一遍就好了。那通过提供的这样的一个竞价实力的弹性组合,可以极大的去缩短你对整个云资源的一个消耗。