apache-storm trident

apache storm - Storm vs. Trident: ¿Cuándo no usar Trident?



apache-storm (5)

Chris, ya que estos dos son tecnologías de código abierto, trident sirve como una única implementación de un escenario en la parte superior de la tormenta, por supuesto, esto trajo una sobrecarga de rendimiento. Si el tridente no pudo cumplir con sus requisitos, crea su propia implementación de estado además de la tormenta. Trident obtuvo proyectos de mayor nivel como Trident-ML a tiempo.

Estoy trabajando con Storm y está bien para muchos casos de uso. Recientemente eché un vistazo a Trident , que es una abstracción de alto nivel de Storm. Es compatible con el procesamiento de una sola vez y facilita el procesamiento con estado.

Pero ahora me pregunto ... ¿Por qué no puedo usar siempre Trident en lugar de Storm?

Lo que leí hasta ahora:

  • Trident procesa los mensajes en lotes, por lo que el tiempo de procesamiento podría ser más largo.
  • Trident aún no puede procesar bucles en topologías.

¿Hay alguna otra desventaja al usar Trident en lugar de Storm? Porque ahora mismo, creo que las desventajas que enumeré arriba son marginales.

¿Qué casos de uso no se pueden implementar con Trident?

Secuelas:

Desde que hice la pregunta, mi empresa decidió ir primero a Trident. Solo usaremos Storm puro cuando haya problemas de rendimiento. Lamentablemente, esta no fue una decisión activa, simplemente se convirtió en el comportamiento predeterminado (yo no estaba cerca en ese momento).

Su suposición era que en la mayoría de los casos de uso necesitamos procesamiento de estado o solo una vez o lo necesitaremos en un futuro próximo. Entiendo su razonamiento porque pasar de Storm a Trident o regresar no es una transformación fácil, pero en mi opinión personal el concepto de procesamiento de flujo sin estado no fue entendido por todos y esa fue la razón principal para usar Trident.


Para responder a tu pregunta: ¿cuándo no deberías usar Trident? Siempre que pueda permitirse no hacerlo.

Trident agrega complejidad a una topología Storm, reduce el rendimiento y genera estado. Hágase la pregunta: ¿necesita la semántica de procesamiento "exactamente una vez" de Trident o puede vivir con la semántica de procesamiento "al menos una vez" de Storm? Por exactamente una vez, use Trident; de lo contrario, no.

También me gustaría resaltar el hecho de que Storm garantiza que todos los mensajes serán procesados. Algunos mensajes pueden ser procesados ​​más de una vez.


Si la meta de latencia más baja posible es tu objetivo y no necesitas exactamente un procesamiento, usar Storm es mejor que Trident.


Trident es una abstracción de alto nivel para hacer computación en tiempo real sobre Twitter Storm, disponible en Storm 0.8.x. Storm es un marco de procesamiento de flujo sin estado y Trident proporciona un procesamiento de flujo con estado.


supongamos que queremos filtrar + agregar un campo a una tupla. si utilizamos la tormenta usamos generalmente 2 bots para filtrar, agregar campo. así que de nuevo tenemos que enviar la tupla a un nuevo perno por medio de una agrupación global. así que aquí nw ancho de banda puede convertirse en un cuello de botella.

mediante el uso de tridente, podemos usar hacer lo anterior en una sola máquina. por lo que no es necesario reagrupar en este caso. dicho caso de uso además de "exactamente una vez" / "al este una vez" puede diferenciar qué usar, etc.

Trident es una especie de agrupamiento agrupación lógica