Apache Kafka แก้ปัญหาอะไรบ้าง

Apache Kafka แก้ปัญหาอะไรบ้าง



Apache Kafka คือ เป็นระบบเหตุการณ์แบบกระจาย ทำงานแบบเรียล์ไทม Distributed Event Streaming Platform สำหรับรับ-ส่ง จัดเก็บ และประมวลผลข้อมูลต่างๆ ระหว่างระบบต่าง ๆ

Apache Kafka ในสถาปัตยกรรมซอฟต์แวร์ แก้ปัญหาสำคัญเรื่อง การสื่อสารและการไหลของข้อมูลระหว่างระบบจำนวนมาก โดยเฉพาะระบบที่ต้องรองรับ Real-time และ Scale สูง ได้แก่ Tight Coupling, Traffic สูง,  Real-time Data มีความต่อเนื่องกัน, Service ล่มแล้วข้อมูลหาย, การทำงานไม่พร้อมกัน, Data Pipeline ข้อมูลชุดเดียวกันไปใช้ได้หลายระบบ, Scalability การขยายระบบ

Apache Kafka มีแนวคิดหลักว่า
“อย่าให้ระบบต่าง ๆ เรียกหากันโดยตรงทุกครั้ง แต่ให้สื่อสารกันผ่าน Event 
ที่อยู่ในศูนย์กลาง Event Streaming”

กล่าวง่ายๆ คือ ทำหน้าที่เป็นตัวกลางระหว่างระบบ โดยการทำงานจะทำงานแบบจับเหตุการณ์ แบบ Real Time ซึ่งต่อการความต่อเนื่อง ป้องกันข้อมูลศูนย์หายระหว่างการสื่อสารระหว่างระบบ

องค์ประกอบของ Apache Kafka

Apache Kafka เป็นแพลตฟอร์มสำหรับจัดการและส่งต่อข้อมูลในรูปแบบ Event Streaming โดยออกแบบมาเพื่อให้ระบบซอฟต์แวร์หลายระบบสามารถแลกเปลี่ยนข้อมูลกันได้อย่างต่อเนื่อง รองรับข้อมูลจำนวนมาก และสามารถประมวลผลข้อมูลแบบ Real-time ได้ แนวคิดสำคัญของ Kafka คือการแยกผู้ส่งข้อมูลออกจากผู้รับข้อมูล โดยมี Kafka เป็นตัวกลางในการจัดเก็บและกระจาย Event

  1. Producer ซึ่งทำหน้าที่สร้างและส่งข้อมูลหรือ Event เข้าสู่ Kafka ตัวอย่างเช่น เมื่อผู้ใช้สมัครสมาชิก ระบบสามารถสร้าง Event ชื่อ UserRegistered หรือเมื่อมีการสั่งซื้อสินค้า ระบบสามารถสร้าง Event OrderCreated จากนั้น Producer จะส่ง Event เหล่านี้เข้าสู่ Kafka โดยไม่จำเป็นต้องรู้ว่ามีระบบใดนำข้อมูลไปใช้งานต่อ
  2. Broker ซึ่งเปรียบเสมือนเซิร์ฟเวอร์ที่รับ จัดเก็บ และให้บริการข้อมูลที่อยู่ภายใน Kafka ในระบบขนาดใหญ่จะมี Broker หลายเครื่องรวมกันเป็น Kafka Cluster เพื่อรองรับปริมาณข้อมูลสูง เพิ่มประสิทธิภาพ และช่วยให้ระบบสามารถทำงานต่อได้เมื่อเกิดปัญหากับเครื่องใดเครื่องหนึ่ง
  3. Topic ซึ่งเปรียบเสมือนช่องทางหรือหมวดหมู่สำหรับ Event เช่น orders สำหรับข้อมูลคำสั่งซื้อ payments สำหรับข้อมูลการชำระเงิน หรือ ai.questions สำหรับคำถามที่ส่งเข้าสู่ระบบ AI การแบ่งข้อมูลด้วย Topic ช่วยให้ระบบสามารถจัดการและนำข้อมูลแต่ละประเภทไปใช้ได้อย่างเป็นระบบ
  4. Partition ซึ่งเป็นกลไกสำคัญที่ทำให้ Kafka สามารถรองรับข้อมูลจำนวนมากและประมวลผลแบบขนานได้ ตัวอย่างเช่น Topic orders อาจมี 4 Partition เมื่อมีข้อมูลจำนวนมาก Consumer หลายตัวสามารถรับผิดชอบ Partition ที่แตกต่างกันและทำงานพร้อมกันได้ ส่งผลให้ระบบสามารถเพิ่มความสามารถในการประมวลผลได้ตามปริมาณงาน
  5. Offset ซึ่งใช้ระบุตำแหน่งของ Event เช่น Offset 0, 1, 2 และ 3 Offset ช่วยให้ Consumer สามารถทราบว่าตนเองอ่านข้อมูลไปถึงตำแหน่งใดแล้ว และสามารถกลับมาอ่านข้อมูลต่อจากตำแหน่งเดิมได้ตามข้อมูลที่ยังคงถูกเก็บไว้ใน Kafka
  6. Consumer ซึ่งทำหน้าที่อ่าน Event จาก Topic แล้วนำไปประมวลผลต่อ เช่น Consumer ของระบบชำระเงินอาจรับ OrderCreated แล้วดำเนินการตรวจสอบการชำระเงิน ขณะที่ Consumer ของระบบวิเคราะห์ข้อมูลอาจนำ Event เดียวกันไปคำนวณสถิติหรือสร้างรายงาน

  • Consumer Group โดย Consumer ภายในกลุ่มจะช่วยกันประมวลผล Partition ทำให้สามารถเพิ่มจำนวน Worker เพื่อรองรับข้อมูลที่เพิ่มขึ้นได้ แนวคิดนี้เป็นส่วนสำคัญของการทำ Scalability ในระบบ Kafka
  • Replication ซึ่งเป็นการทำสำเนาข้อมูลของ Partition ไปยัง Broker อื่น เพื่อเพิ่มความทนทานของระบบ หาก Broker ที่ถือข้อมูลหลักเกิดปัญหา Kafka สามารถใช้ Replica ที่มีอยู่ใน Broker อื่นเพื่อช่วยให้ระบบดำเนินงานต่อได้ ทั้งนี้รายละเอียดการเลือกผู้นำและการทำงานของ Replica จะขึ้นอยู่กับการตั้งค่าของ Cluster
  • สำหรับ Kafka รุ่นใหม่ การจัดการ Metadata และหน้าที่ของ Controller ใช้สถาปัตยกรรม KRaft (Kafka Raft) ซึ่งเป็นกลไกภายใน Kafka สำหรับบริหารจัดการข้อมูล Metadata และสถานะของ Cluster โดย Kafka รุ่นใหม่ไม่จำเป็นต้องพึ่งพา ZooKeeper ในสถาปัตยกรรมแบบ KRaft

ข้อสรุปต่างๆของ Apache Kafka

  • Event Streaming รับ–ส่งข้อมูลแบบต่อเนื่องได้ รองรับการทำงานแบบ Real-time ของข้อมูล 
  • Event Backbone เป็นศูนย์กลางการส่ง Event ระหว่างระบบ ทำให้ระบบต่าง ๆ สื่อสารกันผ่าน Kafka
  • Tight Coupling ลดการเชื่อมต่อโดยตรงระหว่าง Service ต่างๆ ทำให้เกิด Loose Coupling น้อยลง
  • Asynchronous Processing ในแต่ละ Producer สามารถส่งงานแล้วไม่ต้องรอ Consumer จนทำงานเสร็จ ซึ่งเหมาะกับงานหลังบ้าน Background และงานที่ใช้เวลานาน
  • รองรับข้อมูลจำนวนมาก โดยใช้ Partition ในการแบ่งส่วนข้อมูลออกหลาย Partition และ Consumer Group สามารถกระจายงานไปหลาย Worker ได้
  • Scalability เพิ่ม Broker, Partition หรือ Consumer เพื่อรองรับโหลดที่เพิ่มขึ้น
  • Resilience การทำงานแบบ Event ต่างๆ สามารถถูกเก็บไว้ตามนโยบาย Retention Consumer สามารถกลับมาอ่าน Event ที่ยังคงอยู่ได้
  • Data Pipeline ส่งข้อมูลจาก Application ไปยัง Database, Data Lake, Analytics หรือระบบอื่น ๆ
  • Microservices ให้ Microservices แลกเปลี่ยน Event โดยไม่ต้องเรียกกันโดยตรงทุกครั้ง
  • Real-time Analytics ส่งข้อมูลให้ระบบ Analytics และ Monitoring ได้อย่างต่อเนื่อง

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

อะไรคือ NPU (Neural Processing Unit) มีความสำคัญอย่างไร แนวคิดมาจากไหน

TomCat สำหรับติดตั้ง แก้ไข คอนฟิก ใช้งาน JSP

Micro SaaS "ขนาดพอดีคำ" สร้างธุรกิจเริ่มต้นอย่างง่ายด่าย จากไอเดียสู่สร้างรายได้ โดยใช้ AI Agent ตอบสนองความต้องการซอฟต์แวร์ที่เล็ก ง่าย และทรงพลัง