七叶笔记 » golang编程 » 作业帮基础架构负责人出席云原生实战峰会 展望2022云原生发展动向

作业帮基础架构负责人出席云原生实战峰会 展望2022云原生发展动向

近日,2022云原生实战峰会在上海举办。300 余位云原生实战派企业代表参会,共同探讨云原生落地路径、挑战与创新实践。在峰会现场,作业帮基础架构负责人董晓聪受邀分享作业帮云原生实践之路,并展望2022年云原生发展动向。

2022年云原生实战峰会由阿里云主办,本期峰会主题为:原生万物,云上创新。云原生不仅是对 IT 生态的全新重塑,也是对企业组织、开发人员的能力变革。在此次峰会上,还举办了云原生首批MVP的颁奖仪式,董晓聪成为获奖者之一。


云原生改造追求——降本不降质

作业帮成立于2015年,是一家致力于用科技手段助力教育普惠的公司。董晓聪介绍,作业帮技术现状主要有两大特点,一个特点是规模化,当前作业帮有数千个应用服务,对应着数万的服务实例,这些实例部署在数十万计算核心之上。另一个特点是复杂化,作业帮的技术栈极为丰富,使用最多的语言为PHP和Golang,约能占到60%以上,除此之外还有大量的系统使用NodeJs、Java、C++、lua、python编写等。

董晓聪说,作业帮从创立之初就是base在云之上的,充分的享受了云计算的红利。随着这些年的高可用建设,实现了多云的架构。高可用、快速迭代、极致性能也是作业帮一贯的技术要求。

为什么要进行降本增效呢?董晓聪说,这个工作之前一直也在做,但今天的要求会更高。首先,随着互联网的红利消退,公司的每分钱都需要产生更大的价值,要实现成本效益的最大化。其次,成本管控,不必用的支出是应该节省的。最后,也是一个技术从业人员的追求,作为程序员,还是想要写出更好更高性能代码。

“在追求降本的同时,还要明确一点,降本不降质,稳定性、研发/运维效率、安全等不应该为此打折扣。”董晓聪表示,最终,作业帮选择走云原生的道路,和云厂商一起充分释放云的潜力。

借助云原生降本——我们这么做

在应用层,作业帮着手对典型场景进行重点攻克。对于模块数量最多的PHP业务进行优化运行态优化,对资源使用最多的检索服务进行架构优化。在部署调度上依托K8S,实现了CPU、GPU、任务的自定义调度器。同时,使用在离线混部解决空间不均的问题,使用弹性扩缩+serverless解决时间不均的问题。而在资源这部分,K8S通过CRI、CSI、CNI等实现了对应用的透明,便于选择更优的机型。

对于应用层云形态的优化,首先是运行程序更好地编译,如PHP进行了非线程安全版本的编译。在服务注册发现这块,整体从client名字服务过渡到云原生的coreDNS+ipvs。为减少DNS的网络请求,做了一层localDNS,内核层面则使用了更高的4.1x内核。最后,依赖terway的容器网络以及mesh的网络连接持久化进一步提升性能。

董晓聪表示,经过这一系列的优化,压测下单核可支撑800QPS,较之前有倍数级别提升。应用在具体线上业务,带来43%的资源使用降低。

Fluid成为关键纽带——实践收益可观

检索系统是一个复杂的系统,作为最底层且需要高性能的服务,一般是存储和计算耦合。随着数据量越来越大,就需要对数据进行切片,每个节点只存储一部分的数据。由于高并发高可用的要求,单片数据节点还需要有多个副本。由此形成的一个二维矩阵。面临着一系列数据更新周期长、运维效率低、性能无法提升等问题。


“作为容器改造最难啃的骨头,为了解决这些问题,我们决定进行计算和存储的分离,因为只有引入计算存储分离架构,才能从根本上解决系统复杂度的问题。”董晓聪说,经过多方调研比对,作业帮最终选用Fluid作为整个新架构的关键纽带,并采用JindoRuntime 作为缓存加速引擎。

这一实践的收益是很可观的。董晓聪表示,经过改造后,数据同步周期从小时级别降低到分钟级别,一般在8分钟内就可以完成。运维成本也大幅度降低,交付周期从天级别讲到到小时级别。性能提升了30%,节省了万核级别的资源使用。

让更大规模的在线业务跑在serverless上

离现混部是工程界的经典课题。在线资源是有明显的波峰波谷,波谷有大量的剩余计算资源。大数据离线使用了大量的一些资源,但多数的任务对计算的实时性并没有那么强的要求,没有说必须在几分钟内得到结果,几个小时跑出来也可以。

“如果能在在线集群波谷时来跑大数据离线计算,大数据离线的资源就可以节省出来,这样就可以达到一个双赢的效果。”董晓聪说,但是它会面临很多挑战,很难做到资源的完整隔离,在线资源的稳定性、延时都会受到影响。为此,作业帮使用云厂商改造后的CFS,然后就实现了CPU的避让。在放量的过程中,也整体控制节奏,先在夜间在线服务没什么量的时候来跑离线计算,然后跑相对比较稳定之后,再在白天的波谷时间来跑大数据离线。

对于弹性伸缩和serverless,董晓聪介绍,作业帮的CPU服务运行在三个池子上的:主机群的CPU资源,GPU上面的CPU资源以及serverless。“我们通过人工的方式、定时的HPA、自动的HPA来进行Pod数量的加减,以此实现弹性的扩缩。”

弹性这块主要的挑战就是业务大规模自动扩缩,可能会引发资源的紧缺,这块通过引入serverless弥补资源的不足。但serverless作为一个新兴的技术,它的稳定性还是需要得到验证,这块也是一个逐步放量的过程,最终取得效果还不错。董晓聪说,当前公司整体的服务运行比较平稳,在serverless上也有万级别的应用。

“后面希望更大规模的在线业务也可以跑在serverless上,实现业务的真正削峰。”董晓聪表示,未来,作业帮也将探索更多更优的机型,以及在部分特定场景下AMD机型的应用。此外,运营工作经历先靠人再靠运维平台的过程,其中涉及较多的数据分析工作,未来要将其BI化,AI化,实现成本问题的自动发现。

相关文章