Atlas Stream Processing asigna recursos por procesador de flujo de acuerdo con niveles. La asignación fija de recursos y costos proporciona previsibilidad, lo que simplifica el proceso de diseño del sistema. Utiliza esta guía para comprender qué niveles son los más adecuados para tus cargas de trabajo de Stream Processing al planificar una implementación.
Asignación de recursos
Cada nivel proporciona una asignación fija de potencia de procesamiento, memoria, ancho de banda, paralelismo y, para los procesadores con fuentes Apache Kafka, particiones.
Nivel | vCPU | RAM (GB) | Ancho de banda (Mbps) | Paralelismo máximo | Límite de partición de Kafka de origen | Límite de recopilación de sincronización inicial |
|---|---|---|---|---|---|---|
SP2 | 0.25 | 0.5 | 50 | 1 | 32 | 1 |
SP5 | 0.5 | 1 | 125 | 2 | 64 | 1 |
SP10 | 1 | 2 | 200 | 8 | Ilimitado | 5 |
SP30 | 2 | 8 | 750 | 16 | Ilimitado | 10 |
SP50 | 8 | 32 | 2500 | 64 | Ilimitado | 50 |
Paralelismo
El paralelismo determina cuántos subprocesos o solicitudes concurrentes puede usar un procesador de flujo para leer, enriquecer y escribir datos. El paralelismo se configura en etapas individuales de la canalización, pero Atlas Stream Processing lo aplica a todo el procesador en función del máximo permitido para el nivel del procesador, como se muestra en la tabla anterior.
Etapas que favorecen el paralelismo
Las siguientes etapas aceptan un valor parallelism. Cada una tiene por defecto el valor 1.
Etapa | Efecto de valores más altos |
|---|---|
El campo | |
Aumenta el número máximo de solicitudes paralelas dirigidas al destino | |
Aumenta el número de subprocesos entre los que Atlas Stream Processing distribuye las operaciones de escritura, lo que requiere que tanto el procesador de flujo como el clúster en el que escribe utilicen más recursos computacionales. | |
Aumenta el número de subprocesos de escritura internos que utiliza el operador sink, distribuyendo las operaciones de escritura entre dichos subprocesos. Para los sinks que admiten el campo | |
Aumenta el número máximo de solicitudes paralelas realizadas a la función externa, lo que requiere más recursos computacionales. |
Paralelismo acumulativo
Cada procesador de flujo tiene un valor máximo de paralelismo acumulado determinado por su nivel. El paralelismo acumulativo de un procesador de flujo se calcula de la siguiente manera:
parallelism total - parallelized stages
Donde parallelism total es la suma de todos los parallelism valores mayores que 1 en las $source etapas, $lookup, $merge, $emit y $externalFunction, y parallelized stages es el número de estas etapas con parallelism valores mayores 1 que.
Por ejemplo, si tu etapa $source establece un valor parallelism de 4, tu etapa $lookup no define un valor parallelism (por lo tanto, se toma el valor por defecto 1), y tu etapa $merge define un valor parallelism de 2, entonces tiene dos parallelized stages y el paralelismo acumulativo de su procesador de flujo se calcula como (4 + 2) - 2.
Si un procesador de flujo supera el paralelismo acumulativo máximo para su nivel, Atlas Stream Processing genera un error e informa del nivel mínimo de procesador requerido para el nivel de paralelismo previsto. Debe escalar el procesador a un nivel superior o reducir los valores de paralelismo de sus etapas para resolver el error. Para aprender más, consulte Procesamiento de flujos.
Particiones de origen de Kafka
Los procesadores que leen desde Apache Kafka también están sujetos al límite de partición de origen de su nivel. El nivel SP2 limita un procesador a 32 particiones de origen y el nivel SP5 lo limita a 64. El nivel SP10 y superiores no imponen ningún límite de partición.
Un procesador que supera el límite de particiones de su nivel falla, y es necesario escalarlo para admitir las particiones adicionales. Dado que un tema puede ganar particiones mientras un procesador está en funcionamiento, elija un nivel con capacidad suficiente para el crecimiento de particiones previsto. Para obtener más información sobre el comportamiento de las fuentes de Kafka, consulte Limitaciones.
Monitor de paralelismo configurado
Para comparar el paralelismo que configuraste con el paralelismo disponible para el nivel de tu procesador, usa el campo stats.addedParallelism que devuelven las estadísticas del procesador. Atlas Stream Processing devuelve este campo solo si al menos una etapa establece un valor parallelism mayor que 1.
Selección de carga de trabajo
Las diferentes asignaciones de recursos de cada nivel los hacen adecuados para diferentes etapas y escalas de proyectos.
Nivel | Caso de uso |
|---|---|
SP2 | Desarrollo, Prueba de implementación La opción de menor coste, capaz de soportar cargas de trabajo básicas con requisitos de recursos limitados. |
SP5 | Desarrollo, Implementación básica en producción Una opción de bajo costo adecuada para tareas de producción con bajo rendimiento, incluso aquellas que emplean cálculos más complejos. Los procesadores SP5 pueden ofrecer soporte para filtro básico, proyecciones y procesamiento de flujo de cambios. |
SP10 | Implementación de producción generalizada Un punto de partida para cargas de trabajo de producción. SP10 y superiores están destinados a pipelines que requieren niveles más altos de paralelismo, particionamiento de Kafka ilimitado u operaciones de enriquecimiento de datos, como búsquedas y combinaciones. |
SP30 | Implementación de producción compleja Una opción de alto rendimiento diseñada para operaciones con estado que requieren mucha memoria. SP30 admite canalizaciones que utilizan ventanas de larga duración, múltiples búsquedas y etapas que requieren grandes búferes de RAM para el enriquecimiento de datos a gran escala. |
SP50 | Producción a escala empresarial La opción de mayor rendimiento, diseñada para flujos de alto rendimiento y lógica de transformación extensiva. Los procesadores SP50 son apropiados para operaciones que requieren masivo paralelismo o flujos de trabajo de alta demanda computacional. |
Considerations
Ten en cuenta los siguientes factores a la hora de seleccionar un nivel adecuado:
Oleada de inicialización
Un procesador de flujo puede requerir más recursos durante su ejecución inicial que durante las operaciones regulares. Por ejemplo, un procesador que realiza una operación initialSync sobre una gran colección de Atlas necesita soportar operaciones de entrada/salida y cálculos intensivos durante el tiempo que dure la sincronización.
Para absorber una demanda tan elevada, selecciona temporalmente un nivel superior y reduce el procesador una vez que la sincronización esté completa y el procesador pase a consumir solo nuevos eventos del flujo de cambios.
Lógica de pipeline
La lógica del pipeline de agregación es el principal factor del consumo de CPU y RAM.
- Windows: Las ventanas de larga duración consumen más RAM para mantener en vuelo
- documento.
- Lógica personalizada: Javascript
$functionetapas o agrupamiento complejo - la lógica aumenta los requisitos computacionales de cada mensaje.
- Lógica personalizada: Javascript
- Crear complejidad: Etapas adicionales con estado o complejidad computacional
- Introducir una mayor variación potencial en la demanda de recursos. Mantener un excedente de capacidad garantiza un rendimiento constante incluso durante los picos de consumo.
Infraestructura
Cada punto de contacto en la red o el almacenamiento incrementa la sobrecarga de un procesador de flujos.
- Densidad de Fuente o Sumidero: lectura o escritura en paralelo
- Las fuentes o sumideros, como los Apache Kafka temas con sus particiones, aumentan los requerimientos de entrada/salida (E/S).
- Enriquecimiento de datos:
$lookupy$httpsetapas; y operaciones - recopilaciones de Atlas para enriquecer los datos en un flujo requieren ancho de banda de red y agrupamiento de conexiones.
- Enriquecimiento de datos:
- Coordinación: En implementaciones complejas que orquestan muchas fuentes
- y sumideros, los procesadores de flujo pueden funcionar como concentradores que enrutan el flujo de datos entre cada uno de estos nodos. Dichos procesadores se benefician del mayor rendimiento de los niveles SP30 y SP50.
Por el contrario, las cargas de trabajo de Stream Processing de alto rendimiento pueden aumentar la demanda sobre los recursos conectados.
- Impacto en Atlas: I/O paralelizado de gran volumen desde una transmisión
el procesador puede exceder la capacidad de lectura o escritura de los clústeres Atlas de origen o de destino. Esto no solo puede aumentar la latencia para el procesador, sino también convertirse en un cuello de botella para otras cargas de trabajo dependientes de esos clústeres.
Para asegurar el rendimiento en todo el sistema, escala tus clústeres de Atlas proporcionalmente a los procesadores con los que interactúan.
Rendimiento y latencia
Los objetivos de rendimiento pueden requerir un procesador de nivel superior incluso cuando la lógica de procesamiento sea mínima.
- Alto rendimiento: Los procesadores de nivel superior ofrecen un mejor soporte para transmisiones
- que producen eventos a alta velocidad.
ANR de baja latencia: El alto paralelismo que ofrecen los procesadores de nivel superior ayuda a garantizar que los eventos no se acumulen en una cola cuando la velocidad es crucial. En particular, los procesadores SP50 ofrecen cuatro veces más hilos que los procesadores SP30.
- Enriquecimiento y almacenamiento en caché de datos: cuando se utiliza
$cachedLookuppara enriquecer - los flujos con conjuntos grandes de datos de referencia estáticos o que cambian lentamente, favorecen procesadores de mayor nivel para proporcionar la RAM necesaria para el almacenamiento en caché.
- Enriquecimiento y almacenamiento en caché de datos: cuando se utiliza
- Sinks complejos: Algunos sinks implican costos más elevados
- transformaciones, transacciones y sobrecarga de gestión de archivos. Para los procesadores que interactúan con estos receptores, los niveles superiores ayudan a garantizar un rendimiento y una latencia coherentes.
Escalado
El escalado de Atlas Stream Processing es vertical. Puede escalar un procesador manualmente o habilitar el escalado automático para que Atlas Stream Processing ajuste el nivel por usted.
Para escalar un procesador manualmente, deténgalo, seleccione un nuevo nivel y reinícielo. Los puntos de control de Atlas Stream Processing garantizan que no se pierdan datos durante la transición. Supervise el rendimiento de sus procesadores periódicamente y ajuste sus niveles según los factores descritos en esta guía.
Para que Atlas Stream Processing ajuste automáticamente el nivel en función del uso de recursos, habilite el escalado automático vertical. Utilice los factores de esta guía para elegir los valores minTier y maxTier que delimitan el rango de escalado de un procesador.