Pular para o conteúdo principal

Escalabilidade horizontal para Databricks Apps

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.

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​

Session affinity works automatically for browser-based apps. The first request from a browser routes to a randomly selected instance, which sets the __Host-databricks-app-router cookie. Subsequent requests with that cookie route to the same instance. O Databricks remove esse cookie de roteamento antes de encaminhar a solicitação para o aplicativo.

clientes da API​

To route API clients to the same instance, include the X-Routing-Key header in every request and set it to a stable value such as a randomly generated UUID. All requests with the same header value route to the same instance.

Se uma solicitação incluir o cabeçalho X-Routing-Key e o cookie __Host-databricks-app-router, o cabeçalho terá precedência. O Databricks encaminha o cabeçalho X-Routing-Key para o aplicativo.

Bash
curl -X GET https://<your-app>.aws.databricksapps.com/api/endpoint \
-H "Authorization: Bearer YOUR_BEARER_TOKEN" \
-H "X-Routing-Key: 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 20 aplicativos com dimensionamento horizontal. Entre em contato com seu representante da 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.