A Meta liberou como open-source o Rebalancer, uma biblioteca C++ com uma interface Python para resolver problemas de atribuição. Ele decide quais objetos vão para quais 'bins' (recipientes/caixas) sob restrições e objetivos. De acordo com a publicação da Engineering at Meta, o Rebalancer tem gerenciado a alocação de recursos em toda a Meta por mais de 9 anos. O lançamento é feito sob a licença Apache 2.0 com documentação, um pacote PyPI e uma UI de depuração chamada Rebalancer Explorer. É possível fazer o deploy? Sim. `pip install rebalancer` instala a v1.0.4 para Python 3.12+, com 'wheels' pré-compilados para Linux x86-64 e macOS 14+ ARM64. Pacotes .deb, .rpm e Homebrew também existem. O PyPI ainda classifica o projeto como Alpha.
Que Problema o Rebalancer Resolve? Problemas de atribuição surgem em toda a stack da Meta. Racks vão para datacenters, servidores vão para serviços, tarefas vão para servidores e o tráfego de usuários vai para datacenters. A Meta aponta 2 bloqueadores: usabilidade e escalabilidade. Engenheiros se esforçam para transformar políticas em fórmulas precisas, e muitos problemas são NP-hard e muito grandes para resolvedores comerciais. A resposta do Rebalancer é separar como um problema é especificado de como ele é resolvido. O design é detalhado no artigo da OSDI 2024, "Optimizing Resource Allocation in Hyperscale Datacenters".
Como a Camada de Especificação Funciona
A linguagem de especificação possui 3 camadas:
* **Constructos de modelagem:** dimensões (atributos como CPU ou armazenamento), partições (grupos de objetos), escopos (grupos de bins) e utilização.
* **API de expressão:** agrega a utilização com SUM ou MAX, ou a transforma com operações como SQUARE.
* **API de especificação:** dezenas de objetivos e restrições predefinidos, listados na documentação.
O exemplo da Meta modela tarefas como objetos, servidores como bins e racks como um escopo. Um `CapacitySpec` limita CPU e armazenamento por servidor. Um `GroupCountSpec` mantém 1 tipo de job por rack. Um `BalanceSpec` equilibra a utilização de cada servidor em ambas as dimensões.
Um Grafo de Expressão, Dois Resolvedores
O Rebalancer compila a especificação em um grafo de expressão acíclico direcionado. Os nós folha contêm ut
Fonte: MarkTechPost
Publicado em 2026-10-07