Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Guía para la selección del nivel de Stream Processing en Atlas

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.

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

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.

Las siguientes etapas aceptan un valor parallelism. Cada una tiene por defecto el valor 1.

Etapa
Efecto de valores más altos

El campo initialSync.parallelism establece el paralelismo de la operación initialSync. Si coll nombra más de una colección, el valor se aplica a la lista de colecciones en su conjunto, en lugar de a cada colección individualmente.

Aumenta el número máximo de solicitudes paralelas dirigidas al destino $lookup, lo que puede incrementar el rendimiento, pero también consume más recursos del clúster de destino. Debe ser un número entero entre 1 y 64.

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 partitionBy, el hash de esa expresión determina qué subproceso procesa cada documento.

Aumenta el número máximo de solicitudes paralelas realizadas a la función externa, lo que requiere más recursos computacionales.

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.

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.

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.

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.

Ten en cuenta los siguientes factores a la hora de seleccionar un nivel adecuado:

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.

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 $function etapas o agrupamiento complejo
    la lógica aumenta los requisitos computacionales de cada mensaje.
  • 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.

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: $lookup y $https etapas; y operaciones
    recopilaciones de Atlas para enriquecer los datos en un flujo requieren ancho de banda de red y agrupamiento de conexiones.
  • 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.

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 $cachedLookup para 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é.
  • 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.

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.