什么是在离线业务

  • 在线服务:运行时间长,服务流量及资源利用率有潮汐特征,时延敏感,对服务 SLA 要求极高,如消息流 Feed 服务、电商交易服务等。

  • 离线作业:运行时间分区间,运行期间资源利用率较高,时延不敏感,容错率高,中断一般允许重运行,如 Hadoop 生态下的 MapReduce、Spark 作业。

技术门槛

  • 可观测性体系
  • 调度决策

在离线混部的调度决策是决定混部效果的核心,目前主要有几种决策方式:

整机分时复用:在固定的时间点(比如凌晨以后)跑离线作业,白天让出资源给在线服务。这种以时间维度切分的混部方式比较简单易理解,但整体资源利用率提升有限。

资源部分共享:将单机的资源整体划分为在线资源、离线资源以及在离线共享资源,各资源之间隔离,提前划分预留。这种从单机资源维度切分的混部方式比分时复用相对更精细一些,但是需要资源规格较大的机器切分才有意义。

资源完全共享:通过及时准确的资源预测手段、快速响应资源变化的能力,以及一套可以在资源水位发生变化时的服务保障措施,更高效自动化地实现机器资源复用。资源归属不预设,完全依据实时指标决策。

前一种属于静态决策,相对来说对底层可观测性体系的要求、对调度系统的高可用高性能的要求较低。
后两种属于动态决策,在资源利用率的提升上比静态决策更优,但对前述支撑系统要求也更高。

  • 调度执行
  • 资源隔离
  • 任务冲突时的资源保障
  • 服务平行扩缩容能力

业界在离线混部方案

  • 独占内核 + 物理机 + 静态决策

入门级的在离线混部选择,比如物理机运行服务且分时整机腾挪。

  • 独占内核 + 容器 + 动态决策

如果公司研发团队底层技术积累比较少,想快速、安全、低成本地用上在离线混部,先享受部分混部的成本优化红利,则独占内核+ 容器 + 动态决策组合的方案是首选。

  • 共享内核 + 容器 + 动态决策

如果有比较强的研发实力,能够较好解决第二部分中讲到的几乎所有技术门槛,就可以挑战共享内核 + 容器 + 动态决策组合的方案,以追求极致的资源利用率和成本优化效果。