序言

2016年腾讯架构平台部相继推出了两朵云 -- 云存储和云接入,在公司内外打造了良好的口碑同时,资源量也得到了增加,依托于部门海量的存储资源,建设了TCS(Tencent ComputeServices)-弹性计算平台。截至目前,弹性平台运营的计算力,服务了公司图片压缩、视频转码、离线计算和AI计算等多个计算场景,前不久平台服务的AI 绝艺围棋获得了第十届UEC比赛的冠军。平台强大的计算并非直购设备堆积,而是未增加任何预算成本,默默挖矿耕耘,不断优化逻辑细节所得。

平台演变

2012年图片上传下载量剧增,为扛住海量图片压缩,平台快速上线直接混部策略,存储和压缩同机部署,虽然服务了业务的增长,但运营困难,资源抢占的问题日显,给运维带来了繁巨的工作量,为解决资源抢占等问题,平台启动重构,取消直接混部,改用KVM虚拟机,平台维护虚拟机生命周期,截至2016年,虽稳定服务了图片压缩、视频转码,但资源静态不可弹性调度,利用率低。2016年被AI引爆,大数据计算更是指数级增长,虚拟机的静态资源策略已不适用,需要一个弹性可调度平台盘活部门整体和公司闲置资源的计算力,TCS-弹性计算平台应运而生。

整体设计

弹性平台对外提供名字化服务供用户接入,并在服务中集成了负载均衡、容灾逻辑,用户无需自主设计架构,即可享受到集群化服务。针对某些已有管理系统的业务,平台也提供了资源租赁策略,用户无需改动,便可快速接入。
平台借助docker技术,并解决了负载的监控调度、资源的弹性伸缩和分布式镜像管理等方面的问题。

3.1.监控调度:秒级反馈,预先调度

1)CPU监控:打造自主的CPI(Cycles PerInstruction)监控指标,结合定制化内核cpu优先级策略,当高优先级的容器cpu指令延时增加,自动调节低优先级容器的cpu-quota值,保障业务服务正常。若低优先级的quota值低于阈值,会触发母机替换,高优先级容器可全占母机。
2)内存:pressure_level预先调度和优先级oom兜底;借助内核pressure_level技术,当pressure_level event触发,依据容器的优先级,调度低优先级容器到其他母机,若出现调度不及时触发oom,则会按照cgroup对oom优先级配置,将低优先级的容器快速回收,释放内存;然后低优先级容器会被调度到其他容器,继续服务。
3)IO监控:引入tlinux 内核的buffer-io限速方案,对每个上架的容器配置带宽限制,xfs quota限制配额。

3.2.弹性伸缩:水平伸缩和垂直伸缩

1)水平伸缩:基于业务负载状况,业务低峰期自动缩减容器量,高峰期自动扩容,业务上削峰填谷,资源所见即所得,维持资源高使用率的同时,也缓解了业务突发运维扩容的压力。
2)垂直伸缩:针对有状态的逻辑,每次的水平伸缩都会打乱原路由表,甚至会导致并发写脏数据的问题,平台使用单机资源垂直伸缩方案,在维护原路由信息的前提下,对单机资源做加减容器操作,盘活不可伸缩的母机低峰期的计算资源。

3.3.镜像服务:镜像和配置分离

1)镜像分发:借助部门的cos云存储平台搭建的分布式镜像服务,实现了标准镜像预先分发,资源服务秒级上线。
2)配置隔离:一个镜像,多套配置,配置变更不会变动镜像,尽可能的减少对业务影响

价值依归

4.1.服务场景

平台当前服务多个业务,根据业务场景和计算的实时性划分了3种类型,每种类型都有相应的模型,作为监控调度、资源抢占的服务基础。

弹性平台优先保证在线服务型和在线计算型业务,尤其在节假日高峰期,平台会自动腾挪离线类型业务资源服务用户请求;针对离线计算业务,平台采用核时量化,实时水平和垂直伸缩业务计算力,资源上互补在线型业务。

4.2.CPU提升

基于弹性伸缩的功能,平台维持资源使用率稳定的前提下,资源量可随着请求变化波动,摒弃了资源量恒定状态中,资源使用率随请求波峰波谷波动的使用方式;后者的资源量因业务峰值而定,使用率较前者低许多。当前平台整体cpu均值使用率(全天24小时求平均)36%,相比去年提升显著。

展望

TCS-弹性计算平台2017年底将全面服务AI计算、游戏类场景模拟等新兴的计算需求,资源调度可定制化,持续提升cpu使用率,并且以弹性平台为基础,搭建TCS-云函数计算平台、FPGA函数计算,在云计算领域继续挖矿耕耘。

文章来源于腾讯云开发者社区,点击查看原文