Pular para o conteúdo principal

Escalabilidade horizontal para Databricks Apps

info

Beta

Este recurso está em Beta. Para solicitar acesso, entre em contato com seu representante do Databricks. Depois que o recurso é ativado, os administradores do workspace podem controlar o acesso a ele na página **Pré-visualizações**. Consulte Gerenciar prévias do Databricks.

Esta página descreve como executar um aplicativo Databricks em várias instâncias por trás de um único URL de aplicativo para maior disponibilidade e concorrência.

O escalonamento horizontal distribui as solicitações entre instâncias, de modo que a falha ou reinicialização de uma única instância não tira o aplicativo do ar. O custo de compute tem uma escala linear com o número de instâncias.

Benefícios adicionais incluem:

  • Afinidade de sessão : Cada solicitação do mesmo usuário é roteada para a mesma instância em uma base de melhor esforço, para que um aplicativo possa manter dados de curta duração por usuário (por exemplo, um cache em memória) nessa instância. Também conhecidas como sessões fixas. Consulte Afinidade de sessão.
  • Implantações sem tempo de inatividade: a Databricks implanta uma nova implantação em uma instância de build primeiro, e atualiza apenas as instâncias restantes depois que essa instância de build é bem-sucedida. As instâncias existentes continuam a servir tráfego.
  • Caches de compilação estáveis : O Databricks preserva artefatos de implantação em todas as atualizações de compute (por exemplo, quando você altera o tamanho ou a contagem da instância), portanto, o aplicativo não requer uma reconstrução completa.

Requisitos

Os seguintes requisitos aplicam-se a todos os aplicativos escalados horizontalmente:

  • Durante o período Beta, seu aplicativo deve escutar em 0.0.0.0 (não 127.0.0.1 ou localhost).

Criar um aplicativo com dimensionamento horizontal

Para criar um aplicativo com escalabilidade horizontal ativada:

  1. No seu workspace Databricks, clique no Ícone do aplicativo. alternador de aplicativos e selecione Databricks Apps .
  2. Clique em + Criar aplicativo e, em seguida, clique em Criar um aplicativo personalizado .
  3. Insira um nome e configure o aplicativo conforme descrito em Criar um aplicativo Databricks personalizado.
  4. No o passo de Configure , selecione Ativar escalabilidade horizontal.
  5. Especifique o **Número de instâncias** (1–5). O Databricks recomenda pelo menos 2 instâncias para disponibilidade.
  6. Clique em Criar aplicativo .

A habilitação do dimensionamento horizontal para um aplicativo não afeta outros aplicativos no workspace.

Aplicativos escalados horizontalmente recém-criados não incluem as bibliotecas Python pré-instaladas. Declare todas as dependências em requirements.txt ou pyproject.toml. Consulte Gerenciar dependências para um aplicativo Databricks.

Converter um aplicativo padrão para usar escalabilidade horizontal

Converter um aplicativo padrão existente para um aplicativo com dimensionamento horizontal da tab **Configurações**. A conversão não acarreta tempo de inatividade. Seu aplicativo padrão existente continua a atender o tráfego até que a nova implantação escalada horizontalmente passe nas verificações de integridade, momento em que o Databricks redireciona o tráfego.

Conversão é reversível. Você pode converter um aplicativo com dimensionamento horizontal de volta para um aplicativo padrão na mesma tab de **Configurações**.

Comportamento de conversão

Aplica-se o seguinte comportamento no momento da conversão:

Testar a conversão

A conversão altera a imagem de runtime do aplicativo e o modelo de escalonamento. Antes de converter um aplicativo de produção, valide a alteração em um duplicado:

  1. Crie uma duplicata do aplicativo padrão que deseja converter.
  2. Converta a duplicata usando os passos seguintes.
  3. Verifique se o aplicativo funciona conforme o esperado na duplicata convertida. Verifique logs, tráfego e qualquer comportamento de afinidade de sessão.
  4. Converta o aplicativo de produção após a validação.

Converter um aplicativo padrão

Para converter um aplicativo padrão para escalonado horizontalmente:

  1. No seu workspace Databricks, clique no Ícone do aplicativo. alternador de aplicativos e selecione Databricks Apps .
  2. Clique no nome do aplicativo que deseja converter.
  3. Clique na tab Configurações.
  4. Em **Compute**, selecione **Ativar escalabilidade horizontal**. O Databricks define a contagem de instâncias como **1**, que é necessária no momento da conversão.
  5. Clique em Salvar .

A Databricks inicializa novo compute com dimensionamento horizontal e, em seguida, reimplementa seu aplicativo nele. O tempo total depende da duração da compilação do seu aplicativo. O aplicativo existente continua atendendo ao tráfego.

Após a conclusão da conversão, você pode escala ou desativar bibliotecas pré-instaladas.

Gerenciar a contagem de instâncias

Para alterar o número de instâncias de um aplicativo dimensionado horizontalmente:

  1. Na página de detalhes do aplicativo, clique em Editar .
  2. No passo **Configurar**, atualize o **Número de instâncias**.
  3. Clique em Salvar .

O aplicativo continua a atender ao tráfego enquanto a Databricks aplica a alteração.

Afinidade de sessão

A afinidade de sessão roteia cada solicitação do mesmo usuário para a mesma instância sempre que possível. Um aplicativo pode usar este roteamento para manter dados de curta duração por usuário (por exemplo, um cache em memória ou arquivos temporários no sistema de arquivos local) na instância que lida com a sessão desse usuário. Afinidade de sessão também é conhecida como sessões persistentes.

A afinidade da sessão é de melhor esforço. Não armazene nada em estado local da instância que não possa ser reconstruído ou buscado de um armazenamento durável. Armazene quaisquer dados que devam sobreviver a uma sessão em um armazenamento durável, como tabelas do Unity Catalog.

Você também pode persistir dados com Lakebase.

Aplicativos baseados em navegador

A afinidade de sessão funciona automaticamente para aplicativos baseados em navegador. A primeira solicitação de um navegador é roteada para uma instância selecionada aleatoriamente, que define o cookie __Host-databricks-app-router. Solicitações subsequentes com esse cookie direcionam para a mesma instância.

clientes da API

Para obter afinidade de sessão para clientes da API, inclua o cookie __Host-databricks-app-router em cada solicitação e defina-o como um UUID gerado aleatoriamente. Todas as solicitações com o mesmo valor de cookie são roteadas para a mesma instância.

Bash
curl -X GET https://<your-app>.aws.databricksapps.com/api/endpoint \
-H "Authorization: Bearer YOUR_BEARER_TOKEN" \
-b "__Host-databricks-app-router=f8822466-3b1e-423a-988b-54c9e639c250"

Reatribuição de sessão

As sessões podem ser movidas para uma instância diferente nos seguintes casos:

  • Uma instância fica indisponível (por exemplo, durante a implantação ou uma falha).
  • Você altera a contagem de instâncias.
  • Databricks rebalanceia sessões entre instâncias.
  • Uma solicitação individual é mal roteada (raro).

Limitações

Aplicam-se as seguintes limitações a aplicativos escalados horizontalmente:

  • Cada workspace pode ter no máximo 5 aplicativos com dimensionamento horizontal. Entre em contato com seu representante Databricks para aumentar este limite.
  • Cada aplicativo com escalabilidade horizontal pode ter no máximo 5 instâncias. Entre em contato com seu representante Databricks para aumentar este limite.
  • A tab de Logs mostra logs de uma única instância por vez. Para visualizar os registros em todas as instâncias, habilite a telemetria do aplicativo.