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 dimensionamento automático ajuda você a lidar com cargas de trabalho flutuantes, absorver picos inesperados de tráfego e evitar falhas que ocorrem quando um processador esgota os recursos de seu tier. Como o Atlas Stream Processing gerencia as decisões de dimensionamento internamente, você não precisa monitorar o uso e redimensionar os processadores por conta própria.
Casos de uso
Considere habilitar o autoscaling vertical nos seguintes cenários:
Dimensionamento inicial incerto: Se você não conseguir estimar com precisão o tier que um processador exige, comece com um tier menor e permita que o dimensionamento automático ajuste o tier para corresponder à carga real.
Tráfego flutuante ou crescente: se sua carga de trabalho apresentar crescimento orgânico ou picos periódicos, o escalonamento automático aumentará os recursos durante a alta demanda e os reduzirá durante a baixa demanda.
Resiliência operacional: Se um processador subdimensionado correr o risco de falha durante eventos de pico, o escalonamento automático aumenta o tier automaticamente para manter o processador em execução.
Como funciona o dimensionamento automático
Ao habilitar o escalonamento automático para um processador de fluxo, o Atlas Stream Processing monitora o uso de CPU e 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 na nova tier 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 tier superior quando o uso de recursos do processador excede um dos seguintes limites de dimensionamento 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 dimensionamento vertical responde rapidamente à pressão sustentada sobre os recursos para proteger a disponibilidade do processador.
Atlas Stream Processing scales a processor up only when the next higher tier is less than or equal to the configured maxTier.
Comportamento de dimensionar 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.
Atlas Stream Processing scales a processor down only when the next lower tier is greater than or equal to the configured minTier.
Limites de tier: minTier e maxTier
Embora o Atlas Stream Processing gerencie os limites de dimensionamento, você controla a faixa de tier entre os quais um processador pode ser dimensionado com duas configurações:
Contexto | Descrição |
|---|---|
| O tier mais baixo que o processador pode dimensionar até. Garante um nível mínimo de recursos e define um custo mínimo. |
| O tier mais alto para o qual o processador pode ser dimensionado. Limita o consumo de recursos e o custo, e evita que um pico anômalo faça o dimensionamento do processador para um tier desnecessariamente caro. |
Se você não especificar minTier ou maxTier ao habilitar o escalonamento automático, o Atlas Stream Processing usará a configuração do workspace de stream processing como padrão:
Se você não especificar
minTier, o Atlas Stream Processing usa o menor tier entre o tier padrão do workspace de stream processing e o tier no qual você inicia o processador. Usar o valor mais baixo evita uma configuração inválida quando o tier padrão está acima do tier inicial.Se você não especificar
maxTier, o Atlas Stream Processing usa o tamanho máximo de tier do workspace de stream processing. Se o workspace do Stream Processing não tiver um tamanho de tier máximo, o processador retornará um erro e não será iniciado.
Alguns recursos de pipeline exigem um tier mínimo. Por exemplo, processadores que usam processadores de failover exigem um tier mínimo de SP10. Defina minTier pelo menos com o tier mínimo que o pipeline do seu processador exige.
A tabela a seguir mostra como minTier e maxTier vinculam ações de dimensionamento:
Configuração de tier | Tier atual | Ação de dimensionar | tier resultante |
|---|---|---|---|
|
| aumentar |
|
|
| aumentar | Restam |
|
| Reduzir a dimensionar |
|
|
| Reduzir a dimensionar | Restante |
Ativar e configurar o Autoscaling
You can enable, modify, and disable autoscaling for a stream processor with the autoscaling option on the sp.processor.start() or sp.processor.modify() method in mongosh. Atlas Stream Processing persists the autoscaling configuration, so a processor reuses its prior configuration if you stop and restart it without changes.
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 escalonamento automático com limites de tier explícitos, especifique minTier e maxTier:
sp.processor.start( {autoscaling: {enabled: true, minTier: "SP2", maxTier: "SP50"}} )
Para definir o tier em que um processador começa enquanto 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 dimensionamento automático, pare o processador e defina enabled como false:
sp.processor.modify({autoscaling: {enabled: false}})
When you disable autoscaling, Atlas Stream Processing pins the processor's effectiveTier to its tier baseline.
Comportamento adicional
tier e effectiveTier
Quando o escalonamento automático está ativado, o Atlas Stream Processing acompanha dois valores de tier 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 tier em que o processador está realmente sendo executado. Quando o escalonamento automático está habilitado, o Atlas Stream Processing ajustaeffectiveTierdentro da faixa definida porminTieremaxTier. Quando o escalonamento automático está desabilitado,effectiveTiercorresponde atier.
Se você interromper um processador após o escalonamento automático alterar seu effectiveTier, o Atlas Stream Processing reiniciará o processador em seu effectiveTier mais recente, não no tier em que você o iniciou inicialmente. Esse comportamento permite que o processador retome sua carga de trabalho anterior sem esperar pelo escalonamento automático novamente.
To view a processor's autoscaling configuration and current tier, use the sp.processor.stats() method. The output includes the tier baseline, the read-only effectiveTier, and an autoscaling object with minTier and maxTier:
sp.processor.stats() { ok: 1, name: 'sampleProc', state: 'STARTED', tier: 'SP10', effectiveTier: 'SP10', autoscaling: { minTier: 'SP2', maxTier: 'SP50' }, stats: { ... }, ... }
Alinhamento de tier
Se você iniciar um processador com um valor tier fora da faixa de escalonamento automático configurada, seja abaixo de minTier ou acima de maxTier, o processador retornará um erro e não será iniciado.
Esgotamento de recurso no maxTier
Se um processador esgotar seus recursos no maxTier configurado, o Atlas Stream Processing se comportará da seguinte forma:
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 aprender como criar e gerenciar os processadores de fluxo nos quais você habilita o escalonamento automático, consulte Desenvolver processadores de fluxo.
Para escolher uma faixa de tier apropriada para sua carga de trabalho, consulte o Guia de Seleção de Tier.