El escalado automático vertical ajusta automáticamente el nivel de un procesador de transmisión en respuesta a su uso de recursos. Cuando habilita el escalado automático, Atlas Stream Processing escala un procesador hacia arriba o hacia abajo dentro del rango de niveles que defina. No es necesario detener y reiniciar manualmente el procesador para cambiar su nivel.
El escalado automático le ayuda a gestionar las fluctuaciones de la carga de trabajo, absorber los picos de tráfico inesperados y evitar fallos que se producen cuando un procesador agota los recursos de su nivel. Dado que Atlas Stream Processing gestiona internamente las decisiones de escalado, no necesita supervisar el uso ni redimensionar los procesadores manualmente.
Casos de uso
Considere habilitar el escalado automático vertical en los siguientes escenarios:
Dimensionamiento inicial incierto: Si no puede estimar con precisión el nivel que requiere un procesador, comience con un nivel más pequeño y permita que el escalado automático ajuste el nivel para que coincida con la carga real.
Tráfico fluctuante o creciente: si su carga de trabajo experimenta un crecimiento orgánico o picos periódicos, el escalado automático aumenta los recursos durante los períodos de alta demanda y los reduce durante los períodos de baja demanda.
Resiliencia operativa: Si un procesador de capacidad insuficiente corre el riesgo de fallar durante los picos de demanda, el escalado automático aumenta el nivel automáticamente para mantener el procesador en funcionamiento.
Cómo funciona el escalado automático
Al habilitar el escalado automático para un procesador de flujo, Atlas Stream Processing supervisa el uso de CPU y memoria del procesador y lo compara con umbrales gestionados internamente. Atlas Stream Processing controla estos umbrales para equilibrar la capacidad de respuesta y la estabilidad, y no se pueden configurar.
Para cambiar el nivel de un procesador, Atlas Stream Processing realiza las siguientes acciones:
Comportamiento de escalamiento
Atlas Stream Processing eleva un procesador al siguiente nivel superior cuando el uso de recursos del procesador supera uno de los siguientes umbrales de escalado durante un período prolongado:
El uso de la CPU es superior al 90% durante 60 minutos.
El uso de memoria es superior al 80% durante 60 minutos, o superior al 90% durante 30 segundos.
Atlas Stream Processing también aumenta la capacidad de un procesador si este se queda sin memoria. Cuando el escalado automático está habilitado, una condición de falta de memoria aumenta la capacidad del procesador al siguiente nivel superior en lugar de provocar un fallo.
La ampliación de la capacidad permite responder rápidamente a la presión sostenida sobre los recursos para proteger la disponibilidad del procesador.
Atlas Stream Processing scales a processor up only when the next higher tier is less than or equal to the configured maxTier.
Comportamiento de reducción de escala
Atlas Stream Processing reduce la escala de un procesador al siguiente nivel inferior cuando el uso de CPU y memoria del procesador permanece por debajo de un umbral de reducción de escala durante más de dos días. El umbral de escalado descendente es el umbral de escalado ascendente del siguiente nivel inferior, menos un búfer del 10% que evita que el procesador vuelva a escalar de inmediato. Este período de estabilización de dos días hace que la reducción de escala sea deliberadamente lenta para evitar el escalado frecuente entre niveles.
Atlas Stream Processing reduce la escala de un procesador solo cuando el nivel inmediatamente inferior es mayor o igual que el minTier configurado.
Límites de nivel: minTier y maxTier
Si bien Atlas Stream Processing gestiona los umbrales de escalado, usted controla el rango de niveles entre los que un procesador puede escalar mediante dos configuraciones:
Configuración | Descripción |
|---|---|
| El nivel más bajo al que puede reducirse el procesador. Garantiza un nivel básico de recursos y establece un coste mínimo. |
| El nivel más alto al que puede escalar el procesador. Limita el consumo de recursos y el costo, y evita que un pico anómalo provoque que el procesador se escale a un nivel innecesariamente costoso. |
If you don't specify minTier or maxTier when you enable autoscaling, Atlas Stream Processing uses the stream processing workspace configuration as the default:
Si no especifica
minTier, Atlas Stream Processing utiliza el menor valor entre el nivel predeterminado del espacio de trabajo de procesamiento de flujos y el nivel en el que se inicia el procesador. El uso del valor menor evita una configuración no válida cuando el nivel predeterminado está por encima del nivel de inicio.If you don't specify
maxTier, Atlas Stream Processing uses the stream processing workspace maximum tier size. If the stream processing workspace has no maximum tier size, the processor returns an error and doesn't start.
Algunas características de la canalización requieren un nivel mínimo. Por ejemplo, los procesadores que utilizan procesadores de conmutación por error requieren un nivel mínimo SP10 de. Establezca minTier al menos en el nivel mínimo que requiere la canalización de su procesador.
La siguiente tabla muestra cómo minTier y maxTier delimitan las acciones de escalado:
Configuración de niveles | Nivel actual | Acción de escala | Nivel resultante |
|---|---|---|---|
|
| Escalar |
|
|
| Escalar | Remains |
|
| Reducir proporcionalmente |
|
|
| Scale down | Remains |
Habilitar y configurar el escalado automático
Puede habilitar, modificar y deshabilitar el escalado automático para un procesador de flujo con la autoscaling opción en el sp.processor.start() método o sp.processor.modify() mongoshen. Atlas Stream Processing conserva la configuración de autoescalado, por lo que un procesador reutiliza su configuración anterior si se detiene y se reinicia sin realizar cambios.
Para habilitar el escalado automático con los niveles por defecto y máximos del espacio de trabajo de Stream Processing como límites, utilice la siguiente sintaxis:
sp.processor.start({autoscaling: {enabled: true}})
To enable autoscaling with explicit tier bounds, specify minTier and maxTier:
sp.processor.start( {autoscaling: {enabled: true, minTier: "SP2", maxTier: "SP50"}} )
To set the tier a processor starts on while allowing it to scale within a different range, specify tier with the autoscaling option:
sp.processor.start( {tier: "SP10", autoscaling: {enabled: true, minTier: "SP5", maxTier: "SP30"}} )
Para cambiar los límites de nivel de un procesador existente, detenga el procesador y, a continuación, modifique los niveles de nivel con los nuevos valores. Debe detener un procesador antes de modificarlo. Atlas Stream Processing cambia solo los valores que proporcione:
sp.processor.modify( {autoscaling: {enabled: true, minTier: "SP2", maxTier: "SP30"}} )
Para desactivar el escalado automático, detenga el procesador y establezca enabled en false:
sp.processor.modify({autoscaling: {enabled: false}})
When you disable autoscaling, Atlas Stream Processing pins the processor's effectiveTier to its tier baseline.
Comportamiento adicional
nivel y nivel efectivo
Cuando el escalado automático está habilitado, Atlas Stream Processing realiza un seguimiento de dos valores de nivel para un procesador:
tier: El nivel de referencia que estableció. Atlas Stream Processing no cambia este valor mediante el escalado automático. Solo cambia cuando establece una nueva línea de base, que entra en vigor la próxima vez que inicie el procesador.effectiveTier: Un valor de solo lectura que muestra el nivel en el que se está ejecutando el procesador. Cuando el escalado automático está habilitado, Atlas Stream Processing ajustaeffectiveTierdentro del rango establecido porminTierymaxTier. Cuando el escalado automático está deshabilitado,effectiveTiercoincide contier.
If you stop a processor after autoscaling changes its effectiveTier, Atlas Stream Processing restarts the processor on its last effectiveTier, not the tier you initially started it on. This behavior lets the processor resume its previous workload without waiting to autoscale again.
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: { ... }, ... }
Alineación de niveles
Si inicia un procesador con un valor tier fuera del rango de autoescalado configurado, ya sea por debajo de minTier o por encima de maxTier, el procesador devuelve un error y no se inicia.
Agotamiento de recursos en maxTier
If a processor exhausts its resources at the configured maxTier, Atlas Stream Processing behaves as follows:
Agotamiento de memoria: El procesador falla con un error de falta de memoria.
Agotamiento de la CPU: El procesador continúa funcionando.
If a processor reaches maxTier and can't keep up with its workload, consider optimizing your pipeline logic or increasing maxTier.
Supervisión de eventos de escalado automático
Atlas Stream Processing records each scale-up and scale-down event. Each record identifies the processor and stream processing workspace, whether the event is a scale-up or scale-down, the tiers the processor moved to and from, and the metric that triggered the event. To learn how to view scaling events and configure alerts, see Monitor Stream Processors.
Empezar
Para aprender a crear y administrar los procesadores de flujo en los que habilita el escalado automático, consulte la sección "Desarrollo de procesadores de flujo".
Para elegir el nivel adecuado para su carga de trabajo, consulte la Guía de selección de niveles.