มาทำความรู้จักกับ Kafka กันเถอะ
Kafka คืออะไรกันนะ 🤔 …
Kafka ก็คือ Distributed message queue ที่ทำหน้าเป็นตัวกลางในการกระจายข้อมูล (Messages) จากผู้ส่ง (Producers) ไปยังผู้รับ (Consumers) ที่ติดตามในหัวข้อ (Topics) นั้นๆ
แล้วทำไมเราถึงต้องใช้ Kafka ล่ะ 🤔 …
ก็เพราะว่า Kafka มีความยืดหยุ่นสูง สามารถรองรับข้อมูลที่มีปริมาณมหาศาล ทำงานได้อย่างรวดเร็วมาก (latency น้อยกว่า 10ms) และยังเป็นระบบที่มีความทนต่อความเสียหายสูงมาก
โดย Kafka จะประกอบไปด้วย
- Producers คือ ผู้ส่งข้อมูลไปยัง Broker เพื่อจัดเก็บไว้ใน Topic
- Consumers คือ ผู้รับข้อมูลที่ทำการ Subscribes topic นั้นๆ เพื่อนำข้อมูลไปใช้งานต่อ
- Topics คือ หมวดหมู่ของข้อมูลที่ถูกส่งเข้ามา ซึ่งเราสามารถตั้งชื่อให้กับแต่ละ Topic ได้ โดย Message จะถูกแบ่งไว้ในแต่ละ partition
- Partitions คือ กลุ่มที่ใช้เก็บข้อมูลซึ่งจะอยู่ภายใต้ Topics อีกที โดยเราสามารถมี Partitions ได้หลายอันในหนึ่ง Topic
- Brokers คือ ตัวที่ใช้เก็บข้อมูลของ Kafka เปรียบเสมือน Kafka server ที่ใช้สำหรับเก็บข้อมูล
- Zookeeper คือ ตัวที่ทำหน้าที่บริหารจัดการ การทำงานต่างๆ ในแต่ละ Broker
การติดตั้ง Kafka
ก่อนอื่นเลย เราต้องทำการ Create file -> docker-compose.yml ตามด้านล่างนี้
จากนั้น… Run command
docker-compose up -d
เมื่อทำการ set up container สำเร็จแล้ว ให้ทำการเปิด browser ตาม url นี้
http://localhost:9000
จะเห็น Console ของ Kafdrop ตามรูปด้านล่างนี้เลยยยยยย
ซึ่งเจ้า Kafdrop ตัวนี้ ใช้สำหรับเป็น UI monitor ของ Kafka เพื่อให้เราทำงานได้สะดวกยิ่งขึ้นค่ะ
โดยหน้าที่ของเจ้า Kafdrop มีประโยชน์ ดังนี้
- ใช้สำหรับดู Brokers ใน Bootstrap servers ของเรา
- สามารถสร้าง/ลบ Topics รวมไปถึงดูรายละเอียดต่างๆ เช่น Partitions และ Message ใน Topics ของเรา
การสร้าง Topic
หลังจากที่เราทำการติดตั้ง Kafka เสร็จเรียบร้อยแล้ว เรามาลองสร้าง Topic กันเถอะ
ขั้นตอนแรกให้เรา run คำสั่ง
docker ps
จะเห็น Container ตามรูปด้านล่าง
จากนั้นให้เราทำการเข้าไปที่ Container kafka ของเราด้วยคำสั่งนี้
docker exec -it kafka sh -c "cd /opt/kafka/bin && /bin/bash"
แล้วลองสร้าง Topic กันเลยยยยยย
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic my-topic
เราสามารถดู Topic ที่สร้างไปแล้ว ด้วยคำสั่ง List Topic ตามนี้
./kafka-topics.sh --bootstrap-server=localhost:9092 --list
จะเห็น Topic ที่เราเพิ่งสร้างไปตามรูปนี้เลย
เมื่อลองกลับมาดูที่ Console ของ Kafdrop จะเห็น Topic ที่เราเพิ่งสร้างมาอยู่ในนี้ด้วย
นอกจากการใช้ Command แล้ว เรายังสามารถสร้าง Topic โดยใช้ Kafdrop ได้อีกด้วย 😊
ลองกดปุ่ม “New” ที่ด้านล่างซ้าย จะปรากฎหน้าจอให้เราทำการสร้าง Topic จากนั้นตั้งชื่อ Topic และจำนวน Partition ที่ต้องการ แล้วกดปุ่ม “Create” เพื่อสร้าง Topic กันเลยยยยยยยยย
เราจะได้ Topic ที่เราสร้างเมื่อสักครู่นี้ ตามรูปด้านล่างนี้เลย ง่ายมากๆ เลยใช่มั้ยล่ะ
การ Produce message
เมื่อเราทำการสร้าง Topic เรียบร้อยแล้ว ทีนี้เรามาลองทำการ Produce message กันเถอะ 💬
Run command ตามนี้เลยยยยยย
./kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic
จากนั้นทำการพิมพ์ Message ที่ต้องการ Procude ลงไปตามรูปด้านล่างนี้เลย
เราสามารถดู Message ที่ทำการ Procude ไปแล้ว ด้วยคำสั่งนี้
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning
จะเห็น Message ตามรูปด้านล่าง
นอกจากนี้เรายังสามารถ ดู Message ใน Console ของ Kafdrop ได้อีกด้วย โดยคลิกที่ชื่อ Topic ของเรา
จากนั้นกดปุ่ม 👀 “View Messages”
แล้วกดปุ่ม 🔍 “View Messages” อีกครั้ง จะแสดง Message ที่เรา Produce ไปเมื่อสักครู่นี้
การลบ Topics
หลังจากที่เราทำการสร้าง Topic และ Produce message แล้ว เราลองมาทำการลบ Topic กันเถอะ ⬅️
โดยใช้คำสั่งนี้
./kafka-topics.sh --bootstrap-server localhost:9092 --topic my-topic --delete
เมื่อเราทำการ List Topic ออกมาดูด้วยคำสั่ง List Topic ก่อนหน้านี้ จะพบว่า Topic ของเราได้ถูกทำการลบเรียบร้อยแล้วววววว
นอกจากนี้เรายังสามารถทำการลบ Topic ผ่าน Console บน Kafdrop ได้อีกด้วย โดยการคลิกไปที่ชื่อ Topic ที่เราต้องการลบ และกดปุ่ม ❌ “Delete Topic”
เพียงเท่านี้เราก็สามารถลบ Topic ได้อย่างง่ายดายยยยยยย
ขอบคุณทุกคนที่อ่านมาจนจบ แล้วพบกันใหม่ในบทความหน้านะคะ บ๊ายบายยยยยยยยยยยย 👋