知识卡片

从"做PaaS"到"做编排调度平台":放弃强一致性范式,改用消息广播让业务自主决策

普通读书笔记卡

内容

在[[第一代PaaS完整闭环设计的落地教训:平台的理想范式与业务的真实诉求相冲突]]之后,团队做出了一个根本性的方向调整:彻底放弃”做一个PaaS”的思路,转而参考Google的Borg和Omega,去实现一个类似的服务编排和调度平台(也就是Project Eru)。这个转变的核心不只是技术选型的变化,更是对”平台该管多少事”这个问题的重新定义:第一代NBE是一个完整闭环,业务从生到死的每个环节都有NBE各个组件的深度参与,平台试图对整个生命周期建立一套强一致性的规范;第二代Eru则主动放弃了这种完整闭环的设计,除了少数必须统一的环节(比如构建Image这类),构建Dockerfile、如何启动应用这些具体决策,Eru都不再强行规定业务方必须遵循某种范式。取而代之的机制是:Eru把集群里所有Container的状态变化通过Redis这样的消息总线对外广播,业务方可以自行监控自己关心的数据(可能不是通用的CPU/内存/IO,而是某个特定接口的响应耗时这类业务特有的指标),基于这些数据自主决策要不要扩容缩容,再调用Eru-Core的API去执行这些操作——平台本身不去干涉或建立规则限定业务方具体怎么做决策,这也正是这套系统不再被称为”PaaS”的原因。这个转变揭示了一条基础设施平台设计上的重要教训:当平台方试图用统一的规范去覆盖所有业务方复杂多样的真实需求时,规范本身要么过于宽泛失去约束意义,要么过于具体而无法适配所有场景,导致落地阻力巨大;退一步只提供”发生了什么”这层信息(消息广播)和”如何操作”这层能力(API),把”什么时候该做什么”这个判断权交还给最了解自己业务特性的一方,反而能让平台的适用面更广、接入阻力更小。

参考来源

- 位置:《高可用架构(第1卷)》第4章《容器与云计算》"4.4 解析Docker在芒果TV的实践之路"节,"4.4.2 芒果TV的Nebulium Engine"及"4.4.3 Project Eru"(源文件:_epub-src/OEBPS/Text/Chapter4_4_3.xhtml、Chapter4_4_4.xhtml) - 结论依据:原文说明"我们抛弃了先前的做一个PaaS的思路,而是决定实现一个类似于Borg一样的服务编排和调度平台",并说明"我们放弃了以前考虑的完整闭环设计……推荐业务根据自身业务特性,通过监控自身数据,订阅Eru广播,调用Eru-Core的API……我们并不会去强行干涉或者建立一系列规则去限定这些事情。这也是它不属于PaaS的原因",直接支撑本卡片结论。 - 原始内容:我们抛弃了先前的做一个PaaS的思路,而是决定实现一个类似于Borg一样的服务编排和调度平台……我们放弃了以前考虑的完整闭环设计……推荐业务根据自身业务特性,通过监控自身数据,订阅Eru广播,调用Eru-Core的API,实现复杂的自定义的部署扩容等操作。