Kafka คืออะไร

Apache Kafka เป็นระบบจัดเก็บข้อมูลแบบกระจายเพื่อนำเข้าและประมวลผลข้อมูลไหลต่อเนื่องแบบเรียลไทม์ ข้อมูลการสตรีมเป็นข้อมูลที่สร้างขึ้นอย่างต่อเนื่องโดยแหล่งข้อมูลนับพันซึ่งตามปกติแล้วจะส่งข้อมูล เข้าไปในบันทึกข้อมูลพร้อม ๆ กัน แพลตฟอร์มการสตรีมจำเป็นต้องรองรับการไหลเข้าของข้อมูลนี้อย่างต่อเนื่อง และทำการประมวลผลข้อมูลอย่างเป็นลำดับขั้นและตามปริมาณที่เพิ่มขึ้น

Kafka มีสามฟังก์ชันหลักที่ผู้ใช้สามารถใช้ได้:

  • เผยแพร่และสมัครรับสตรีมบันทึก
  • จัดเก็บสตรีมบันทึกอย่างมีประสิทธิภาพตามลำดับการสร้างบันทึก
  • ประมวลผลสตรีมบันทึกแบบเรียลไทม์

โดยหลักแล้ว Kafka ถูกใช้เพื่อสร้างไปป์ไลน์ข้อมูลการสตรีมแบบเรียลไทม์และแอปพลิเคชันที่ปรับให้เข้ากับ Data Stream โดยจะรวมการรับส่งข้อความ การจัดเก็บ และการประมวลผลสตรีมเพื่อให้สามารถจัดเก็บและวิเคราะห์ทั้งข้อมูลย้อนหลังและแบบเรียลไทม์ได้ 

Kafka ใช้ทำอะไรได้บ้าง

Kafka ถูกใช้เพื่อสร้างไปป์ไลน์ข้อมูลการสตรีมแบบเรียลไทม์และแอปพลิเคชันการสตรีมแบบเรียลไทม์ ไปป์ไลน์ข้อมูลจะประมวลผลและย้ายข้อมูลจากระบบหนึ่งไปยังอีกระบบหนึ่งได้อย่างวางใจ และแอปพลิเคชันการสตรีมเป็นแอปพลิเคชันที่ใช้สตรีมข้อมูล ตัวอย่างเช่น หากคุณต้องการสร้างไปป์ไลน์ข้อมูลที่ใช้ข้อมูลกิจกรรมของผู้ใช้เพื่อติดตามวิธีที่ผู้คนใช้เว็บไซต์ของคุณแบบเรียลไทม์ Kafka จะใช้การนำเข้าและจัดเก็บข้อมูลสตรีมในขณะที่ให้บริการการอ่านสำหรับแอปพลิเคชันที่ขับเคลื่อนไปป์ไลน์ข้อมูล Kafka มักใช้เป็นโซลูชัน Message Broker ซึ่งเป็นแพลตฟอร์มที่ประมวลผลและเป็นสื่อกลางการสื่อสารระหว่างสองแอปพลิเคชัน

Kafka ทำงานอย่างไร

Kafka ผสมผสานโมเดลการส่งข้อความสองแบบ ได้แก่ การจัดคิวและเผยแพร่-สมัครรับข้อมูลเพื่อมอบประโยชน์หลักๆ ของแต่ละแบบให้กับผู้บริโภค การจัดคิวช่วยให้การประมวลผลข้อมูลกระจายไปทั่วอินสแตนซ์ของผู้บริโภคจำนวนมาก ส่งผลให้ปรับขนาดได้สูง แต่คิวแบบดั้งเดิมไม่มีผู้สมัครรับข้อมูลหลายราย แนวทางเผยแพร่-สมัครรับข้อมูลเป็นผู้สมัครรับข้อมูลหลายราย แต่เนื่องจากทุกข้อความที่ส่งไปยังผู้สมัครรับข้อมูลทุกรายไม่สามารถใช้เพื่อกระจายงานในกระบวนการหลาย Worker Kafka ใช้โมเดลข้อมูลบันทึกแบบพาร์ทิชันเพื่อเชื่อมโยงโซลูชันทั้งสองนี้เข้าด้วยกัน ข้อมูลบันทึกคือลำดับของบันทึกที่ถูกจัดเรียง และข้อมูลบันทึกเหล่านี้จะถูกแบ่งออกเป็นส่วนๆ หรือพาร์ทิชันที่สอดคล้องกับผู้สมัครรับข้อมูลที่แตกต่างกัน ซึ่งหมายความว่าสามารถมีผู้สมัครรับข้อมูลหลายรายในหัวข้อเดียวกัน และทุกรายจะได้รับพาร์ทิชันสำหรับความสามารถในการปรับขนาดที่สูงขึ้น สุดท้าย โมเดลของ Kafka มอบความสามารถในการเล่นซ้ำ ซึ่งช่วยให้หลายแอปพลิเคชันอิสระอ่านจาก Data Stream เพื่อทำงานได้อย่างอิสระในอัตราของตัวเอง

การจัดคิว

เผยแพร่-สมัครรับข้อมูล

แนวทางของ Kafka มีประโยชน์อย่างไรบ้าง

ปรับขนาดได้

โมเดลข้อมูลบันทึกแบบพาร์ทิชันของ Kafka ช่วยกระจายข้อมูลผ่านหลายเซิร์ฟเวอร์ ซึ่งทำให้ปรับขนาดได้มากกว่าขนาดของเซิร์ฟเวอร์เดียว 

รวดเร็ว

Kafka แยก Data Stream ออกจากกัน ดังนั้นจึงมีเวลาแฝงที่ต่ำมาก ส่งผลให้รวดเร็วยิ่งขึ้น 

ทนทาน

พาร์ทิชันจะถูกกระจายและจำลองแบบบนหลายเซิร์ฟเวอร์ และข้อมูลทั้งหมดจะถูกเขียนลงในดิสก์ ซึ่งช่วยป้องกันความล้มเหลวของเซิร์ฟเวอร์ ส่งผลให้ข้อมูลทนต่อข้อผิดพลาดและมีความทนทานอย่างมาก 

สถาปัตยกรรมของ Kafka รวมโมเดลที่แตกต่างกันได้อย่างไร

Kafka แก้ไขทั้งสองโมเดลที่แตกต่างกันได้โดยเผยแพร่บันทึกลงในหัวข้อที่แตกต่างกัน ทุกหัวข้อมีข้อมูลบันทึกแบบพาร์ทิชันซึ่งเป็นข้อมูลบันทึกที่ผูกมัดและมีโครงสร้าง โดยจะติดตามบันทึกทั้งหมดตามลำดับและผนวกบันทึกใหม่แบบเรียลไทม์ พาร์ทิชันเหล่านี้จะกระจายและจำลองแบบอยู่หลายเซิร์ฟเวอร์ ทำให้มีความสามารถในการปรับขนาด ความทนทานต่อข้อผิดพลาด และการทำงานแนวขนานสูง ผู้บริโภคแต่ละรายจะได้รับพาร์ทิชันที่อยู่ในหัวข้อ ซึ่งรองรับผู้สมัครรับข้อมูลหลายรายในขณะที่รักษาลำดับของข้อมูล โดยการรวมโมเดลการส่งข้อความเหล่านี้ Kafka จะมอบประโยชน์ของทั้งสองอย่าง Kafka ยังทำหน้าที่เป็นระบบจัดเก็บข้อมูลที่ปรับขนาดได้และทนต่อข้อผิดพลาด โดยการเขียนและการจำลองแบบข้อมูลทั้งหมดลงในดิสก์ ตามค่าเริ่มต้น Kafka จะเก็บข้อมูลไว้ในดิสก์จนกว่าพื้นที่จะเต็ม แต่ผู้ใช้ยังสามารถกำหนดขีดจำกัดการเก็บรักษาได้ Kafka มีสี่ API:

  • API ผู้ผลิต: ใช้เพื่อเผยแพร่สตรีมบันทึกลงในหัวข้อ Kafka
  • API ผู้บริโภค: ใช้เพื่อสมัครรับหัวข้อและประมวลผลสตรีมบันทึก
  • API สตรีม: ช่วยให้แอปพลิเคชันทำงานเหมือนโปรเซสเซอร์สตรีมซึ่งรับสตรีมอินพุตจากหัวข้อและแปลงเป็นสตรีมเอาต์พุต ซึ่งเข้าสู่หัวข้อเอาต์พุตที่แตกต่างกัน
  • API ตัวเชื่อมต่อ: ช่วยให้ผู้ใช้สามารถเพิ่มแอปพลิเคชันหรือระบบข้อมูลอื่นลงในหัวข้อ Kafka ปัจจุบันโดยอัตโนมัติได้อย่างราบรื่น

Apache Kafka และ RabbitMQ แตกต่างกันอย่างไร

RabbitMQ เป็น Message Broker แบบโอเพนซอร์สที่ใช้แนวทางคิวการส่งข้อความ คิวจะกระจายไปทั่วคลัสเตอร์ของโหนดและเลือกที่จะจำลองแบบได้ โดยแต่ละข้อความจะถูกส่งไปยังผู้บริโภคแต่ละรายเท่านั้น

คุณลักษณะ

Apache Kafka

RabbitMQ

สถาปัตยกรรม

Kafka ใช้โมเดลข้อมูลบันทึกแบบพาร์ทิชัน ซึ่งรวมคิวการส่งข้อความและแนวทางการส่งข้อความเผยแพร่-สมัครรับข้อมูล

RabbitMQ ใช้คิวการส่งข้อความ

ความสามารถในการปรับขนาด

Kafka มอบความสามารถในการปรับขนาดโดยยอมให้กระจายพาร์ทิชันต่างๆ ผ่านเซิร์ฟเวอร์ที่แตกต่างกัน

เพิ่มจำนวนผู้บริโภคลงในคิวเพื่อเพิ่มจำนวนการประมวลผลของผู้บริโภคที่แข่งขันกัน

การเก็บรักษาข้อความ

ตามนโยบาย ตัวอย่างเช่น ข้อความอาจถูกเก็บไว้เป็นเวลาหนึ่งวัน ผู้ใช้สามารถกำหนดค่าช่วงเวลาการเก็บรักษานี้ได้

ตามที่กล่าวมา ซึ่งหมายความว่าข้อความจะถูกลบเมื่อถูกใช้

ผู้บริโภคหลายราย

ผู้บริโภคหลายรายสามารถสมัครรับข้อมูลในหัวข้อเดียวกันได้เพราะ Kafka อนุญาตให้เล่นข้อความเดียวกันซ้ำภายในช่วงเวลาที่กำหนด

ผู้บริโภคหลายรายไม่สามารถรับข้อความเดียวกันได้ เนื่องจากข้อความจะถูกลบออกเมื่อถูกใช้

การจำลองแบบ

หัวข้อจะถูกจำลองแบบโดยอัตโนมัติ แต่ผู้ใช้สามารถกำหนดค่าหัวข้อด้วยตนเองเพื่อไม่ให้จำลองแบบได้

ข้อความจะไม่ถูกจำลองแบบโดยอัตโนมัติ แต่ผู้ใช้สามารถกำหนดค่าหัวข้อด้วยตนเองเพื่อให้จำลองแบบได้

การจัดลำดับข้อความ

ผู้บริโภคแต่ละรายจะได้รับข้อมูลตามลำดับ เนื่องจากสถาปัตยกรรมข้อมูลบันทึกแบบพาร์ทิชัน

ข้อความจะถูกส่งไปยังผู้บริโภคตามลำดับที่มาถึงคิว หากมีผู้บริโภคที่แข่งขันกัน ผู้บริโภคแต่ละรายจะประมวลผลชุดย่อยของข้อความนั้นๆ

โปรโตคอล

Kafka ใช้โปรโตคอลไบนารีผ่าน TCP

รองรับโปรโตคอลคิวการส่งข้อความขั้นสูง (AMQP) ผ่านปลั๊กอิน: MQTT, STOMP

อ่านเพิ่มเติมเกี่ยวกับความแตกต่างระหว่าง Kafka และ RabbitMQ»

AWS จะสนับสนุนข้อกำหนดของ Kafka ได้อย่างไร

อ่านเพิ่มเติมเกี่ยวกับวิธีการนำ Kafka ไปใช้จริงด้วยตนเองบน AWS ที่นี่

AWS ยังมี Amazon MSK ซึ่งเป็นบริการที่เข้ากันได้ พร้อมใช้งาน และปลอดภัยที่สุดสำหรับ Apache Kafka ที่ช่วยให้ลูกค้านำเข้า Data Lake สตรีมการเปลี่ยนแปลงเข้าและออกจากฐานข้อมูล และขับเคลื่อนแอปพลิเคชันแมชชีนเลิร์นนิงและการวิเคราะห์ เมื่อใช้ Amazon MSK ลูกค้าจะใช้เวลาน้อยลงซึ่งหมายความว่า คุณจะใช้เวลาไปกับการจัดการโครงสร้างพื้นฐานน้อยลง และมีเวลาสร้างแอปพลิเคชันมากขึ้น เรียนรู้เพิ่มเติมเกี่ยวกับ Amazon MSK

ขั้นตอนต่อไปบน AWS

ลงชื่อสมัครใช้งานบัญชีฟรี

รับสิทธิ์การเข้าถึง AWS Free Tier ได้ทันที

ลงชื่อสมัครใช้งาน 
เริ่มต้นการสร้างในคอนโซล

เริ่มต้นสร้างในคอนโซลการจัดการของ AWS

ลงชื่อเข้าใช้