Suche in Kafka

Mein Name ist Sergey Kalinets, ich bin Architekt bei Parimatch Tech und in dieser Veröffentlichung möchte ich unsere Erfahrungen auf dem Gebiet der Nachrichtensuche in Kafka teilen.





Kafka ist für unser Unternehmen das zentrale Nervensystem, über das Microservices Informationen austauschen. Von der Eingabe zur Ausgabe kann eine Nachricht ein Dutzend Dienste durchlaufen, die sie filtern und transformieren und von einem Thema zum anderen übertragen. Diese Dienste gehören verschiedenen Teams, und es kann sehr nützlich sein, zu sehen, was in einer bestimmten Nachricht enthalten ist. Dies ist besonders interessant, wenn etwas nicht nach Plan verläuft - es ist wichtig zu verstehen, in welchem ​​Stadium sich alles in einen Kürbis verwandelt hat (nun, wer muss es dem Kürbis geben, damit dies nicht noch einmal passiert). Aus der Vogelperspektive ist die Lösung einfach: Sie müssen die relevanten Nachrichten aus der Kafka nehmen und sehen, was mit ihnen nicht stimmt. Aber wie immer beginnt das Interessante im Detail.





Beginnen wir mit der Tatsache, dass kafka nicht nur ein Nachrichtenbroker ist, wie viele Leute denken und verwenden, sondern auch ein verteiltes Protokoll. Das bedeutet viel, aber was uns interessiert, ist, dass Nachrichten nicht aus Themen entfernt werden, nachdem die Empfänger sie gelesen haben. Technisch gesehen können Sie sie jederzeit erneut lesen und sehen, was sich darin befindet. Die Dinge werden jedoch durch die Tatsache kompliziert, dass Sie nur nacheinander aus Kafka lesen können. Wir müssen den Versatz kennen (der Einfachheit halber ist dies die Ordnungszahl im Thema), von dem wir Nachrichten benötigen. Es ist auch möglich, die Zeit als Ausgangspunkt anzugeben, aber Sie können trotzdem nur alle Nachrichten der Reihe nach lesen.





, , , , . , 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