Como a pré-computação orientada a eventos e o fornecimento de snapshots reduziram a latência de RPC em 97,5% (5.000 ms → 125 ms) e alcançaram 99,99% de disponibilidade em bilhões de solicitações diárias de configuração de rede.
por Manish Bansal, Yankai Zhang e Chen He
A plataforma de computação serverless da Databricks alimenta praticamente todos os nossos produtos de dados e IA, como SQL warehouses, notebooks, endpoints de ML serving e muito mais. A plataforma inicializa dezenas de milhões de VMs diariamente na AWS, Azure e GCP.
Antes que qualquer carga de trabalho serverless possa ser executada, a VM precisa conhecer sua configuração de rede: Quais destinos de armazenamento ela pode acessar? Existem endpoints de link privado pelos quais ela deve rotear o tráfego? Há alterações recentes no Unity Catalog que concedem acesso a novos destinos de armazenamento? Devemos começar a consumir novos destinos compartilhados via Delta Sharing?
O desafio é que a configuração de rede não fica armazenada em um único lugar. Ela precisa ser reunida a partir de múltiplos serviços upstream, com cada um contribuindo com uma parte do cenário completo.
No design original, toda vez que um cluster serverless era iniciado, nosso serviço de configuração de rede chamava de forma síncrona todos os serviços upstream, agregava suas respostas, computava a configuração de rede por workspace e a retornava para o dataplane serverless. Isso acontecia no caminho crítico da criação do cluster.

Embora a arquitetura antiga fosse simples e funcionasse bem em pequena escala, ela sofria de problemas fundamentais, refletidos nas seguintes métricas que acompanhamos em nosso painel operacional:
À medida que o uso de serverless continuou a crescer rapidamente, o modelo síncrono tornou-se cada vez mais insustentável. Cada chamada síncrona acionava operações caras em todos os workspaces, muitas vezes realizando computações duplicadas. Isso adicionava uma carga que crescia proporcionalmente ao número de tenants e seus recursos configurados.
Realizamos uma rearquitetura completa de como a Databricks entrega as configurações de rede. Ela foi desenvolvida com base nos seguintes princípios fundamentais:

A arquitetura separa claramente dois caminhos. O caminho de gerenciamento é executado de forma assíncrona em segundo plano: os serviços upstream emitem eventos de alteração para uma fila de mensagens, que um processador de eventos consome para determinar quais workspaces são afetados e propagar as notificações de atualização por workspace. Em seguida, um gerenciador de eventos local busca os detalhes relevantes do upstream, computa novamente a configuração de rede do workspace e armazena o resultado em um repositório de snapshots pré-computados. Um reconciliador periódico também sincroniza novamente todos os workspaces em segundo plano, garantindo a consistência eventual mesmo se houver perda de eventos. O caminho de atendimento, por outro lado, é crítico e rápido: quando um cluster serverless é iniciado e precisa de configuração de rede, o serviço de configuração de rede a fornece diretamente do repositório de snapshots com uma única leitura de armazenamento, sem a necessidade de chamadas de serviço upstream e reduzindo significativamente a carga sobre eles.
Quando um cliente cria uma nova conexão do Unity Catalog, o Unity Catalog emite um evento de alteração para a fila de mensagens. O processador de eventos recebe o evento, determina quais workspaces estão anexados ao metastore afetado e propaga uma notificação de atualização por workspace. Na partição de cada workspace, o gerenciador de eventos recebe essa notificação, busca os detalhes da conexão atualizada, computa novamente a configuração de rede do workspace e a armazena com uma nova marcação de versão. A partir desse momento, quando um cluster serverless solicita a configuração de rede, ela é fornecida diretamente do repositório de snapshots, sem a necessidade de chamadas upstream.
Após a implementação da nova arquitetura, os resultados foram transformadores em todas as métricas operacionais:
| Métrica | Antes (Antiga) | Depois (Nova) | Melhoria |
|---|---|---|---|
| Latência (RPC p99) | ~5.000 ms | 125 ms | Redução de 97,5% |
| Taxa de sucesso do servidor | 99,8% | 99,99% | Tempo de inatividade reduzido |

Além das métricas principais:
Este projeto nos ensinou várias lições sobre a operação de infraestrutura de rede em escala de nuvem:
A pré-computação desacopla caminhos críticos. Ao mover a agregação dispendiosa para o segundo plano, o caminho de atendimento torna-se extremamente simples e rápido. Essa foi a decisão arquitetônica de maior impacto. Ela transformou uma cadeia de dependência de múltiplos serviços em uma única leitura de armazenamento.
A arquitetura orientada a eventos troca consistência por escalabilidade, e a reconciliação oferece a rede de segurança. O modelo push baseado em eventos lida com o caso comum de forma eficiente, enquanto um reconciliador periódico captura qualquer detalhe que passe despercebido.
Projete visando a extensibilidade desde o primeiro dia. A arquitetura modular baseada em etapas significa que adicionar suporte para uma nova fonte de dados upstream exige apenas a implementação de uma nova etapa, com zero alterações no pipeline principal. À medida que o portfólio de produtos da Databricks se expande, o sistema de configuração de rede escala junto com ele.
Hoje, esse sistema atende a bilhões de solicitações de configuração de rede por dia em toda a frota global serverless da Databricks, com latência de aproximadamente 125 ms e 99,99% de disponibilidade. À medida que a computação serverless continua seu rápido crescimento, a arquitetura orientada a eventos garante que a entrega de configurações de rede escale no mesmo ritmo.
Estamos sempre procurando engenheiros que gostem de enfrentar desafios de sistemas distribuídos em escala global. Se você se interessa por problemas como esses, adoraríamos conversar com você! Confira as vagas abertas em databricks.com/careers!
(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original
Assine nosso blog e receba os posts mais recentes diretamente na sua caixa de entrada.