Buscar en Kafka

Mi nombre es Sergey Kalinets, soy arquitecto en Parimatch Tech, y en esta publicación quiero compartir nuestra experiencia en el campo de la búsqueda de mensajes en Kafka.





Para nuestra empresa, Kafka es el sistema nervioso central a través del cual los microservicios intercambian información. De entrada a salida, un mensaje puede pasar por una docena de servicios que lo filtran y lo transforman, transfiriéndolo de un tema a otro. Estos servicios pertenecen a diferentes equipos y puede resultar muy útil para ver qué contiene un mensaje en particular. Esto es especialmente interesante en los casos en que algo no sale según lo planeado; es importante comprender en qué etapa todo se convirtió en una calabaza (bueno, quién debe dársela a la calabaza para que esto no vuelva a suceder). A vista de pájaro, la solución es simple: debe tomar los mensajes relevantes del kafka y ver qué les pasa. Pero, como es habitual, lo interesante empieza por los detalles.





Comencemos con el hecho de que kafka no es solo un intermediario de mensajes, como mucha gente piensa y usa, sino también un registro distribuido. Esto significa mucho, pero lo que nos interesa es que los mensajes no se eliminan de los temas después de que los destinatarios los hayan leído y, técnicamente, puedes volver a leerlos en cualquier momento y ver qué hay dentro. Sin embargo, las cosas se complican por el hecho de que solo puede leer de Kafka secuencialmente. Necesitamos conocer el desplazamiento (por simplicidad, este es el número ordinal en el tema) del cual necesitamos mensajes. También es posible especificar la hora como punto de partida, pero luego solo podrá leer todos los mensajes en orden.





, , , , . , id=42, , (playerId: 42), , , .





MySQL MSSQL, , Kafka ( ) .





. , . , « » « » — .





, , , . 





, ?





Kafka Tool

( https://www.kafkatool.com/features.html





, , GUI . , . , . , Kafka Tool , . ( ): «Not great not terrible».





, , . .





Kafka Console Consumer

, . . Kafka, JVM , Java. , Kafka Tool, Java — docker:





, docker run --rm -it taion809/kafka-cli:2.2.0, « , , , , , ».  





, , , . — , .





Kafkacat

, , . , , kafka-console-consumer ( ).





10 messages ( JSON):





- ., , kafkacat . 





( , ):





Kafka — Robin Moffatt. — kafkacat Kafka, kafkacat, . , , . .





. . , — - grep .





, kafkacat Avro , protobuf — . 





Kafka Connect + ELK

, . — . QA ( 90% ) Kafka Tool, — . , Kibana, UI Elasticsearch. Kibana QA . « , Kibana». , , , — Kafka Connect.





Kafka Connect — Kafka . ,  ( ?) Kafka . , — Connect JSON. «» , , — , , , — Kubernetes. 





Kafka Connect REST API, c , Kafka. , Elasticsearch :





HTTP PUT Connect, , , ElasticSinkConnector, Elastic. 





, , , . )





. , , , , - Elasticsearch. 





. , , . Kafka , . ? 





4 . , . , .





— .





Elasticsearch , . . / . — .





 

, Kibana , , . Kafka. , , UTC . , Elasticsearch timestamp, , index template, « — »: 





, , , . 





, , , , , Kibana, .





, Kafka Connect . , , , , . Kafka. — Kafka Elasticsearch. Elasticsearch, id . 





. , - , — ? - , -, — , )








All Articles