Introducción
En el universo de Kafka, la introducción del KIP-382 trajo consigo MirrorMaker 2.0, una solución que aprovecha el marco de trabajo Connect para ofrecer una forma más confiable de replicar entre clústeres de Kafka. No obstante, el modo dedicado de MirrorMaker 2.0 presentó algunas carencias notables, afectando la comunicación entre seguidores y líderes debido a la ausencia de la API REST de Connect. Este artículo explora las soluciones propuestas en el KIP-710 para superar estas limitaciones y optimizar el rendimiento de los nodos dedicados de MirrorMaker 2.0.
Problemas Identificados
Falta de Comunicación Follower a Leader
Uno de los problemas cruciales surge durante un paso de reequilibrio, cuando el líder detiene su instancia de MirrorSourceConnector y la traslada a un seguidor. En este escenario, el líder no puede detectar cambios en la configuración del filtro de temas o grupos por sí mismo. El seguidor puede identificar el cambio, pero al no disponer de la API REST en modo dedicado de MM2, la notificación no llega al líder, dejando al clúster incapaz de detectar cambios en la configuración.
Soluciones Propuestas en KIP-710
Habilitación de un Servidor REST Connect en el Nodo de MirrorMaker 2.0
La propuesta es implementar un servidor REST Connect en el nodo de MirrorMaker 2.0, que admita exclusivamente los puntos finales internos de Connect. Este enfoque jerárquico permite separar los puntos finales de cada flujo de replicación mediante prefijos /source/target. Al habilitar este servidor REST mediante la nueva configuración dedicated.mode.enable.internal.rest, MM2 permite que los nodos Connect seguidores se comuniquen efectivamente con sus líderes.
Evaluación Perezosa de Referencias de Proveedores de Configuración
Otro cambio significativo propuesto en el KIP es la evaluación perezosa de las referencias de proveedores de configuración en las configuraciones del conector creado por los nodos dedicados de MirrorMaker 2.0. En lugar de resolver de manera anticipada todas las referencias al crear la configuración, se mantendrán como referencias no resueltas, permitiendo su resolución en cada nodo del clúster en el momento de la configuración del conector.
Implementación y Consideraciones
Configuración del Servidor REST Connect
El servidor REST Connect se habilita mediante la nueva configuración dedicated.mode.enable.internal.rest, que por defecto está desactivada. Esto asegura la compatibilidad con el comportamiento anterior. Además, se realiza un cambio en la generación de identificadores de trabajadores, utilizando el mismo patrón que el URL publicitario.
Evaluación Perezosa de Referencias de Configuración
Para evitar la resolución anticipada de referencias de configuración, MirrorMakerConfiguration debe mantener un seguimiento del estado original pre-resolución de la configuración. Esto garantiza que las configuraciones guardadas en Kafka contengan referencias en lugar de valores resueltos, facilitando la resolución de referencias por parte del Worker de Connect en un momento posterior.
Conclusiones
El KIP-710 presenta cambios significativos para mejorar la funcionalidad de los nodos dedicados de MirrorMaker 2.0. La habilitación del servidor REST Connect y la evaluación perezosa de referencias de configuración ofrecen soluciones efectivas para los problemas identificados. Estas mejoras no solo abordan las limitaciones actuales, sino que también sientan las bases para un rendimiento más robusto y eficiente en entornos de replicación de clústeres Kafka.