es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Editor que se suscribe a su propio tema.

Actualmente estoy diseñando una aplicación que tendrá cientos de temas compactados de registro. Cada tema está relacionado con un grupo de conmutación por error y debería tener un conjunto dinámico (por ejemplo, que se pueda cambiar a pedido) de productores y consumidores.

Por ejemplo, supongamos que tengo 3 instancias de conmutación por error relacionadas con el tema T1. Cada una de esas instancias de conmutación por error debería tener los mismos datos / estado (eventualmente coherentes). Y cada una de las instancias puede consumir y producir mensajes en ese tema.

Según entiendo, necesito asignar diferentes IDs de grupo para cada consumidor/productor para que cada instancia lea completamente el tema.

Sin embargo, dado que el número de lectores y escritores para un tema no está fijo, ¿cómo es posible evitar leer los propios mensajes para ese tema?

Claro, podría agregar un ID de fuente al mensaje y simplemente descartar el mensaje cuando el consumidor se dé cuenta de que está a punto de leer un mensaje que produjo anteriormente. Pero preferiría evitar por completo la transferencia de datos.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para evitar que un consumidor lea sus propios mensajes en un tema de registro compactado, puede hacer uso del concepto de grupos de consumidores en Apache Kafka. Cuando un consumidor forma parte de un grupo de consumidores, Kafka garantiza que cada mensaje solo sea consumido por un consumidor dentro de ese grupo. Por lo tanto, si todas las instancias de conmutación por error relacionadas con el tema T1 forman parte del mismo grupo de consumidores, cada mensaje será consumido solo una vez por una de las instancias.

    Para lograr esto, puede asignar el mismo ID de grupo a todos los consumidores y productores relacionados con las instancias de conmutación por error de un tema. Además, puede configurar el consumidor para que comience a leer desde el último offset (es decir, el mensaje más reciente) para evitar leer sus propios mensajes desde el principio del tema.

    Al utilizar un único grupo de consumidores para todas las instancias de conmutación por error de un tema, puede lograr consistencia eventual en todas las instancias al mismo tiempo que se asegura de que cada mensaje sea consumido solo una vez. Este enfoque también simplifica la asignación de consumidores y productores a temas, ya que no es necesario gestionar múltiples ID de grupo.

Comments are closed.