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