Cari di Kafka

Nama saya Sergey Kalinets, saya seorang arsitek di Parimatch Tech, dan dalam publikasi ini saya ingin berbagi pengalaman kami di bidang pencarian pesan di Kafka.





Untuk perusahaan kami, Kafka adalah sistem saraf pusat tempat layanan mikro bertukar informasi. Dari input ke output, sebuah pesan dapat melewati selusin layanan yang memfilter dan mengubahnya, mentransfernya dari satu topik ke topik lainnya. Layanan ini dimiliki oleh tim yang berbeda, dan akan sangat berguna untuk melihat apa yang terkandung dalam pesan tertentu. Ini sangat menarik dalam kasus-kasus ketika sesuatu tidak berjalan sesuai rencana - penting untuk memahami pada tahap apa semuanya berubah menjadi labu (yah, siapa yang perlu memberikannya kepada labu agar ini tidak terjadi lagi). Dari sudut pandang luas, solusinya sederhana - Anda perlu mengambil pesan yang relevan dari kafka dan melihat apa yang salah dengan mereka. Tapi, seperti biasa, yang menarik dimulai dari detailnya.





Mari kita mulai dengan fakta bahwa kafka bukan hanya makelar pesan, seperti yang dipikirkan dan digunakan banyak orang, tetapi juga log terdistribusi. Ini sangat berarti, tetapi yang menarik bagi kami adalah bahwa pesan tidak dihapus dari topik setelah penerima membacanya, dan secara teknis, Anda dapat membacanya lagi kapan saja dan melihat isinya. Namun, hal-hal menjadi rumit karena Anda hanya dapat membaca dari Kafka secara berurutan. Kita perlu mengetahui offsetnya (untuk kesederhanaan, ini adalah nomor urut dalam topik) dari mana kita membutuhkan pesan. Dimungkinkan juga untuk menentukan waktu sebagai titik awal, tetapi Anda tetap hanya dapat membaca semua pesan secara berurutan.





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