
Meta 正式开源 Rebalancer,一款C++编写、附带Python接口的分配求解库,用来解决带约束条件的“对象装箱”资源分配问题。这个工具已经在Meta内部生产环境稳定运行超过9年,每日处理约4000万个放置问题,本次采用Apache 2.0协议发布,配套文档、PyPI安装包,还有Docker打包的Web调试工具Rebalancer Explorer。

项目可以直接通过pip install rebalancer部署,当前版本v1.0.4,支持Python3.12及以上,提供Linux x86-64、macOS14+ ARM64预编译包,同时提供deb、rpm、Homebrew安装包;PyPI上项目标记为Alpha版本,适合技术评估与原型开发。
在数据中心场景里,任务分配服务器、分片部署、流量跨机房调度,都属于这类分配问题。这类问题大多是NP难,规模一旦拉满,传统商用求解器算力开销巨大,而且业务策略很难直接转成数学公式。Rebalancer的核心设计思路,业务问题描述与底层求解算法解耦,整套架构细节收录在OSDI 2024论文《Optimizing Resource Allocation in Hyperscale Datacenters》。
建模分为三层规范语言:基础建模构造用来定义CPU、存储这类资源维度,划分对象组与服务器/机架作用域;表达式API支持SUM、MAX、SQUARE等运算做指标聚合;规范API内置数十种预定义目标与约束。开发者只需要描述业务规则,工具自动编译成有向无环表达式图,再选用两套求解引擎。
最优求解器将图转化为混合整数规划模型,对接Xpress、Gurobi、HiGHS求解器,适合中小型问题,多用于前期原型验证;局部搜索求解器直接在表达式图上搜索候选方案,并行评估,每秒可达数百万次评估,Meta绝大多数超大集群调度任务都依赖这套局部搜索。
生产实测数据
- 每日求解约4000万分配任务,覆盖30余种业务模型
- 26.5万对象、3200个箱场景,P99求解耗时12秒
- 超百万对象、5000个箱场景,多次运行平均耗时171秒
适用场景不止云原生集群调度。可以用于容器、分片在服务器上的放置,跨区域流量、AI训练任务负载均衡;也可以落地到非基础设施场景:工单分配工程师、会议室预约、工位人员匹配等排班分配需求。
配套的Rebalancer Explorer可视化UI专门用于排障,能够直观查看约束条件、松弛效果,定位每个对象分配到对应“容器”的原因,大幅降低复杂约束场景的调试成本。
对比同类开源方案,OR-Tools覆盖更多优化问题品类,Timefold Solver面向JVM生态的排班与路由场景。Rebalancer最大特色就是同一套业务约束规范,可无缝切换局部搜索与MIP精确求解,在超大规模资源装箱场景针对性更强。
要点小结
- 项目背景:Meta Rebalancer,C++内核+Python接口,Apache2.0开源,内部9年生产验证
- 双求解架构:MIP精确求解适合中小案例;并行局部搜索,支撑百万级对象的大规模调度
- 部署便捷:支持pip一键安装,多平台预编译包,Docker可视化调试UI
- 适用场景:云集群任务放置、跨区域流量均衡、工单/会议室/工位等各类资源分配
- 核心亮点:业务描述与求解器解耦,同一套规则可以在两种求解引擎上复用
相关导航


Memobase

Meta AI

CLiF

OpenChatBI

MobileGym

RSL






