O autoscaling vertical ajusta automaticamente o nível de um processador de stream em resposta ao uso de recursos. Quando você habilita o autoscaling, o Atlas Stream Processing dimensiona um processador para cima ou para baixo dentro da faixa de níveis que você define. Você não precisa parar e reiniciar manualmente o processador para alterar seu nível.
O autoscaling ajuda você a lidar com cargas de trabalho flutuantes, incorporar picos de tráfego inesperados e evitar falhas que ocorrem quando um processador esgota os recursos de seu nível. Como o Atlas Stream Processing gerencia as decisões de dimensionamento internamente, você não precisa monitorar o uso e redimensionar os processadores.
Casos de uso
Considere habilitar o autoscaling vertical nos seguintes cenários:
Dimensionamento inicial inseguro: se não for possível estimar com precisão o nível que um processador exige, comece com um nível menor e permita que o auto-scaling ajuste o nível para corresponder à carga real.
Tráfego flutuante ou crescente: se o seu volume de trabalho sofrer um crescimento natural ou picos periódicos, o auto-scaling aumentará os recursos durante a alta demanda e os reduzirá durante a baixa demanda.
Resiliência operacional: se um processador subdimensionado corre o risco de falha durante eventos de pico, o dimensionamento automático aumenta o nível automaticamente para manter o processador em execução.
Como funciona o auto-scaling
Quando você ativa o autoscaling para um processador de stream, o Atlas Stream Processing monitora o uso da CPU e da memória do processador e o compara com limites gerenciados internamente. O Atlas Stream Processing controla esses limites para equilibrar a capacidade de resposta e a estabilidade, e você não pode configurá-los.
Para alterar o nível de um processador, o Atlas Stream Processing executa as seguintes ações:
Reinicie o processador
O Atlas Stream Processing reinicia o processador no novo nível e retoma a operação a partir do último checkpoint confirmado, para que nenhum dado seja perdido.
Comportamento de Scale-Up
O Atlas Stream Processing dimensiona um processador para o próximo nível superior quando o uso de recursos do processador excede um dos seguintes limites de expansão por um período sustentado:
O uso da CPU está acima de 90% por 60 minutos
O uso da memória está acima de 80% por 60 minutos ou acima de 90% por 30 segundos
O Atlas Stream Processing também dimensiona um processador se ele ficar sem memória. Quando o autoscaling está ativado, uma condição de falta de memória dimensiona o processador para o próximo nível superior, em vez de falhar com o processador.
O escalonamento responde rapidamente à pressão sustentada de recursos para proteger a disponibilidade do processador.
O Atlas Stream Processing dimensiona um processador somente quando o próximo nível superior é menor ou igual ao maxTier configurado.
Comportamento de redução
O Atlas Stream Processing reduz um processador para o próximo nível inferior quando o uso da CPU e da memória do processador permanece abaixo do limite de redução por mais de dois dias. O limite de redução é o limite de expansão do próximo nível inferior, menos um buffer de 10% que impede que o processador seja dimensionado novamente imediatamente. Esse período de estabilização de dois dias torna a redução deliberadamente lenta para evitar a expansão frequente entre os níveis.
O Atlas Stream Processing dimensiona um processador somente quando a próxima camada inferior é maior ou igual ao minTier configurado.
Limites do nível: minTier e maxTier
Enquanto o Atlas Stream Processing gerencia os limites de dimensionamento, você controla o intervalo de níveis entre os quais um processador pode dimensionar com duas configurações:
Contexto | Descrição |
|---|---|
| O nível mais baixo para o qual o processador pode reduzir. Garante um nível de linha de base de recursos e define um teto de custo. |
| O nível mais alto para o qual o processador pode escalar. Limita o consumo e o custo de recursos e evita um pico anômalo ao dimensionar o processador para um nível desnecessariamente caro. |
Se você não especificar minTier ou maxTier ao ativar o auto scaling, o Atlas Stream Processing usará a configuração do espaço de trabalho de processamento de fluxo como padrão:
Se você não especificar
minTier, o Atlas Stream Processing usará o inferior da camada padrão do espaço de trabalho de processamento de fluxo e o nível em que você inicia o processador. Usar o valor mais baixo evita uma configuração inválida quando o nível padrão está acima do nível inicial.Se você não especificar
maxTier, o Atlas Stream Processing usará o tamanho máximo da camada do espaço de trabalho de processamento de stream. Se o espaço de trabalho de processamento de fluxo não tiver tamanho máximo de camada, o processador retornará um erro e não iniciará.
Alguns recursos de pipeline exigem uma camada mínima. Por exemplo, processadores que usam processadores failover exigem um nível mínimo SP10 de. Defina minTier para pelo menos o nível mínimo exigido pelo pipeline do seu processador.
A tabela a seguir mostra como minTier e maxTier vinculam as ações de dimensionamento:
Configuração de nível | Nível atual | Ação de escala | Nível resultante |
|---|---|---|---|
|
| Aumentar |
|
|
| Aumentar | Permanece |
|
| Diminuir |
|
|
| Diminuir | Permanece |
Habilitar e configurar o auto-scaling
Você pode habilitar, modificar e desabilitar o auto-scaling de um processador de stream com a autoscaling opção no sp.processor.start() método sp.processor.modify() mongosh ou em. O Atlas Stream Processing mantém a configuração de autoscaling, portanto, um processador reutiliza sua configuração anterior se você parar e reiniciá-lo sem alterações.
Para ativar o autoscaling com o padrão do espaço de trabalho de processamento de fluxo e o máximo de camadas como limites, use a seguinte sintaxe:
sp.processor.start({autoscaling: {enabled: true}})
Para habilitar o autoscaling com limites de nível explícitos, especifique minTier e maxTier:
sp.processor.start( {autoscaling: {enabled: true, minTier: "SP2", maxTier: "SP50"}} )
Para definir o nível em que um processador começa e, ao mesmo tempo, permite que ele seja dimensionado dentro de uma faixa diferente, especifique tier com a opção autoscaling:
sp.processor.start( {tier: "SP10", autoscaling: {enabled: true, minTier: "SP5", maxTier: "SP30"}} )
Para alterar os limites de nível de um processador existente, interrompa o processador e modifique os níveis de nível com os novos valores. Você deve parar um processador antes de modificá-lo. O Atlas Stream Processing altera apenas os valores que você fornece:
sp.processor.modify( {autoscaling: {enabled: true, minTier: "SP2", maxTier: "SP30"}} )
Para desativar o autoscaling, pare o processador e defina enabled como false:
sp.processor.modify({autoscaling: {enabled: false}})
Quando você desabilita o autoscaling, o Atlas Stream Processing fixa o nível eficaz do processador na tier linha de base.
Comportamento adicional
nível e eficazTier
Quando o autoscaling está habilitado, o Atlas Stream Processing rastreia valores de dois níveis para um processador:
tier: o nível de linha de base que você definiu. O Atlas Stream Processing não altera esse valor por meio do dimensionamento automático. Ele muda somente quando você define uma nova linha de base, que entra em vigor na próxima vez que você iniciar o processador.effectiveTier: um valor somente leitura que mostra o nível em que o processador está realmente sendo executado. Quando o escalonamento automático está habilitado, o Atlas Stream Processing ajustaeffectiveTierdentro do intervalo definido porminTieremaxTier. Quando o autoscaling está desabilitado,effectiveTiercorresponde atier.
Se você interromper um processador depois que o auto-scaling alterar seu effectiveTier, o Atlas Stream Processing reiniciará o processador em seu último effectiveTier, não no tier em que você o iniciou inicialmente. Esse comportamento permite que o processador retome seu volume de trabalho anterior sem esperar pelo dimensionamento automático novamente.
Para visualizar a configuração de dimensionamento automático de um processador e o nível atual, use o método. A saída inclui sp.processor.stats() a tier linha de base, o somente leitura effectiveTier e um autoscaling objeto com minTier maxTiere:
sp.processor.stats() { ok: 1, name: 'sampleProc', state: 'STARTED', tier: 'SP10', effectiveTier: 'SP10', autoscaling: { minTier: 'SP2', maxTier: 'SP50' }, stats: { ... }, ... }
Alinhamento de níveis
Se você iniciar um processador com um valor de tier fora do intervalo de dimensionamento automático configurado, abaixo de minTier ou acima de maxTier, o processador retornará um erro e não iniciará.
Esgoto de recursos no maxTier
Se um processador esgotar seus recursos no maxTier configurado, o Atlas Stream Processing se comportará da seguinte maneira:
Esgoamento da memória: o processador falha com um erro de memória.
Esgoamento da CPU: o processador continua em execução.
Se um processador atingir maxTier e não conseguir acompanhar seu volume de trabalho, considere otimizar a lógica do pipeline ou aumentar maxTier.
Monitoramento de eventos de escalonamento automático
O Atlas Stream Processing registra cada evento de aumento e redução de escala. Cada registro identifica o processador e o espaço de trabalho de processamento de fluxo, independentemente de o evento ser um aumento ou redução, os níveis de origem e destino do processador e a métrica que acionou o evento. Para saber como exibir eventos de dimensionamento e configurar alertas, consulte Monitor Stream Processors.
Começar
Para saber como criar e gerenciar os processadores de stream para os quais você habilita o autoscaling, consulte Desenvolver processadores de stream.
Para escolher uma faixa de nível apropriada para seu volume de trabalho, consulte o Guia de seleção de nível.