专栏名称: 美团技术团队
10000+工程师,如何支撑中国领先的生活服务电子商务平台?数亿消费者、数百万商户、2000多个行业、几千亿交易额背后是哪些技术在支撑?这里是美团、大众点评、美团外卖、美团配送、美团优选等技术团队的对外窗口。
目录
相关文章推荐
字节跳动技术团队  ·  远程访问代理+内网穿透:火山引擎边缘网关助力 ... ·  15 小时前  
字节跳动技术团队  ·  稀土掘金 x Trae ... ·  15 小时前  
51好读  ›  专栏  ›  美团技术团队

提升资源利用率与保障服务质量,鱼与熊掌不可兼得?

美团技术团队  · 公众号  · 架构  · 2022-08-11 19:58

正文

请到「今天看啥」查看全文


图1 美团在线服务双峰特征
当前业界,很多企业和研究单位都在投入大量的资源来研究如何解决这一矛盾,努力实现整体利益的最大化。
LAR(Load Auto-Regulator),聚焦于“资源利用率提升”和“服务质量保障”这一矛盾的解决,整个系统设计的根本出发点,即是在集群资源运营上要实现资源利用率和服务质量的双重保障,解决数据中心运营中的“鱼与熊掌不可兼得”难题和挑战。

2.2 系统架构

提升资源利用率的本质是提升资源共享复用水平,而保障服务质量则需要通过资源隔离能力,保障服务的性能稳定。针对上述两个根本点,LAR在Kubernetes上提出两个核心创新点:
  • 资源池化分级

    • 通过将单机资源划分到不同的资源池,提升资源在池内的共享复用水平。

    • 不同的资源池之间有不同的优先级,并提供不同的资源隔离水平( 资源隔离水平越高,资源共享复用水平越低 )。

    • 资源在不同优先级的资源池之间根据优先级和资源池的资源负载水平流动,优先保障高优资源池服务的资源使用,从而保障其服务质量。
  • 动态负载和静态资源映射

    • 资源的分配,本质上是负载空间的分配。假设单机整体CPU利用率小于50%的情况下,运营在其上的服务的服务质量不会有影响,那么这个机器的静态资源其实对应的就是节点50% CPU利用率的负载空间。换个角度看,就是无论如何调度分配资源,只要这个节点的负载不超过50%即可。

    • 业务静态的资源申请,根据服务的特征经过调度计算后,服务被放入对应的资源池,而资源池的资源配置则根据池内所有服务的实际负载进行资源配置,并可以实时地根据负载调整资源配置,实现静态资源分配和动态负载的映射管理。
上述两个核心创新点在帮助提升资源共享复用的同时,通过负载管理和操作系统提供的单机资源隔离能力,实现分级的服务质量保障的机制,具有很强的通用性,应用场景也比较广泛。
结合上述的核心创新点,LAR的整体设计目标包括:
  • 相较于Kubernetes,提供分级可编辑更细致灵活的QoS服务质量保障机制,充分保障核心服务的资源供给及服务质量。

  • 建立负载与资源之间的映射关系,解决Kubernetes基于Request的静态资源调度难以解决的节点负载问题,降低负载动态调度的整体复杂度。

  • 提供灵活且具有一定通用性的单机资源调度能力,实现不同服务间资源的错峰复用。

  • 提供更强力的资源隔离能力,保障核心在线业务的服务质量前提下,提升整体的资源利用率。
图2 Hulk资源利用率运营体系
在Hulk整体资源利用率运营体系中,LAR基于Kubernetes扩展,负责单个集群的资源管理和调度。相较于Native的Kubernetes,LAR提供分级可编辑更细致灵活的QoS服务质量保障机制,充分保障不同服务的资源供给及服务质量。
而LAR依托于底层的MTOS提供的资源隔离能力和调度资源Buffer池的物理机弹性伸缩能力,并根据集群运营数据中心和服务画像提供的集群及服务等特征,向上提供精细化的动态资源调整、负载管理以及QoS服务质量保障能力。统一调度系统在LAR之上,根据LAR提供的动态资源及服务质量数据,完成不同应用场景下,包括在线服务和离线服务的跨集群统一调度。
LAR处于整个资源利用率运营体系中核心关键位置,从功能上来看,整个产品分为五大主要功能模块:
  • 资源分级管理模块
  • 资源池配置管理模块
  • 服务质量保障模块
  • 资源隔离管理模块
  • 策略配置模块
上述五大功能模块由LAR系统中3个核心组件来落地实现。LAR是基于原生的Kubernetes进行研发扩展,如下图3的整体架构所示,LAR在Kubernetes的基础功能上,扩展了Scheduler和Kubelet的功能,并新增Recommender和QoSAdaptor两个组件。对Kubernetes原生组件的扩展均采用插件开发的模式,减少对原生组件的入侵式修改,从而降低未来运维和升级的成本;对于新增组件,遵循云原生的开发模式,包括代码风格以及运行机制,和Kubernetes保持统一。
图3 LAR系统架构
QoSAdaptor
QoSAdaptor主要负责服务质量保障,其核心功能是负责单机资源的分池分级管理,提供分级的单机QoS服务质量保障机制。QoSAdaptor分为五个功能模块:
  • 指标采集模块 :通过Cadvisor、Node-Exporter等工具采集节点与容器的指标,为资源池管理提供决策依据。

  • 资源池管理模块
    • 资源动态配置管理:根据数据指标对资源池实时进行负载计算,并基于负载策略及优先级动态调整资源在各级资源池的配置。

    • QoS服务质量保障:实时监控负载指标,依据资源池的优先级管理策略,在资源竞争的情况下,通过资源抢占、服务降级及驱逐等多种手段分优先级保障服务质量。
  • 资源配置管理模块 :基于各资源池的配置,通过Cgroup等系统工具,对不同资源池的资源进行隔离与限制。

  • 资源上报模块 :周期Patch节点的资源使用情况、资源池负载等信息。

图4 QoSAdaptor与Kubelet
QoSAdaptor以DaemonSet的形式部署在Kubelet节点上,核心功能是实现资源池和容器的资源配置管理。如上图4所示,我们通过自研的CRI Plugin,以Runtime Hook的形式在容器生命周期管理中引入自定义的QoS保障机制。
由于QoSAdaptor的资源调整与QoS服务质量保障动作,均基于本地指标采集并进行实时的负载和策略计算,不依赖外部监控系统,减少了数据传输时延,在保证服务的稳定性同时确保可以秒级响应资源配置调整和服务质量保障动作,保障业务容器的稳定性。
Recommender
Recommender主要负责LAR运行中策略及参数的配置更新,依托外部服务数据,周期性计算并更新LAR相关策略参数,提供统一的集群策略配置入口。

图5 Recommender与其它服务组件调用关系
Recommender以集群为维度,每个集群部署一套服务。如上图5所示,Recommender通过集群运营数据中心和服务画像服务的离线数据,周期迭代计算LAR的策略参数。主要功能模块包括:
  • 资源预测 :根据离线监控数据及服务画像数据,对节点物理资源未来的使用情况进行提前预估,指导节点的不同资源池的资源配置,并可能触发QoS服务质量保障动作以及集群级别的资源调整,比如节点扩容及服务重调度等。







请到「今天看啥」查看全文