O dimensionamento automático vertical ajusta automaticamente o tier de um processador de fluxo em resposta ao seu uso de recurso. Quando você habilita o dimensionamento automático, o Atlas Stream Processing dimensiona um processador para cima ou para baixo dentro da faixa de tiers que você define. Não é necessário parar e reiniciar manualmente o processador para alterar seu tier.
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 tier 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 o processador ficar sem memória. Quando o dimensionamento automático está ativado, uma condição de falta de memória dimensiona o processador para o próximo tier superior em vez de fazer o processador falhar.
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 a dimensionar de um processador para o próximo tier inferior quando o uso de CPU e memória do processador permanecer abaixo de um limite de redução de dimensionar por mais de dois dias. O limite de dimensionamento para baixo é o limite de dimensionamento para cima do próximo tier inferior, menos um buffer de 10% que impede o processador de dimensionar para cima novamente imediatamente. Este período de estabilização de dois dias torna o dimensionamento para baixo deliberadamente lento para evitar dimensionamentos frequentes entre os tiers.
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 |
|
| Reduzir a dimensionar |
|
|
| Reduzir a dimensionar | Restante |
Ativar e configurar o Autoscaling
Você pode habilitar, modificar e desabilitar o auto-scaling de um processador de stream com a opção autoscaling no método sp.processor.start() ou sp.processor.modify() em mongosh. 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 habilitar o dimensionamento automático com os tier padrão e máximo do workspace do Stream Processing 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 tier de um processador existente, pare o processador e, em seguida, modifique os níveis de tier 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 linha de base tier.
Comportamento adicional
tier e effectiveTier
Quando o autoscaling está habilitado, o Atlas Stream Processing rastreia valores de dois níveis para um processador:
tier: O tier de base que você define. O Atlas Stream Processing não altera este valor por meio de dimensionamento automático. Ele só muda 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 sp.processor.stats(). A saída inclui a linha de base tier, o effectiveTier somente leitura e um objeto autoscaling com minTier e maxTier:
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:
Esgotamento da memória: O processador falha com um erro de falta de memória.
Exaustão da CPU: O processador continua em execução.
Se um processador atingir maxTier e não conseguir acompanhar sua carga de trabalho, considere otimizar a lógica do seu pipeline ou aumentar maxTier.
Monitoramento de eventos de escalonamento automático
O Atlas Stream Processing faz o registro de cada evento de dimensionar para cima e para baixo. Cada registro identifica o processador e o workspace do Stream Processing, se o evento é um aumento ou redução de dimensionar, os tiers para os quais o processador se moveu e de onde ele veio, e as métricas que acionaram o evento. Para aprender a visualizar eventos de dimensionamento e configurar alertas, consulte Monitorar processadores de fluxo.
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.