คอมพิวเตอร์-อะไรคือ Apache Kafka

มันคือโปรแกรมที่ใช้ในการจัดการคิว ล่าสุดจาก apache

การสร้าง platform นี้ขึ้นมาเพื่อวัตถุประสงค์ 3 อย่างเลยคือ

  1. เผยแพร่และเพื่อให้การทำงานกับเรคคอร์ด, หรือระบบการจัดการต่างๆ ให้มีความเป็นไปอย่างมีลำดับ

2.การเก็บข้อมูลของ streams เพื่อป้องกันการเกิดข้อผิดพลาด

3.โปรเซสการทำงานในแต่ละ process จะเกิดขึ้นเวลาใดก็ได้

Kafka เป็น application เพื่อการทำงานหลัก ๆอยู่สองอย่างคือ

1.เพื่อสร้าง data pipeline ที่เป็นแบบ เรียลไทม์เพื่อรับข้อมูลระหว่างแอพลิเคชันและระบบ

  1. เพื่อสร้างแอพลิเคชัน streaming แบบ real-time เพื่อการแปลงข้อมูลให้อยู่ในรูปแบบของ data streams

เพื่อให้เข้าใจหลักการทำงานของมัน เราจะไปดูด้านล่างดังนี้

Concept คือ kafka รันบนคลัสเตอร์ที่อยู่บน server เพียงตัวเดียวหรือมากกว่าหนึ่งตัว และสามารถกระจายอยู่ในหลาย data center 

Kafka cluster เก็บ streams ของเรคอร์ดให้เป็นหมวดหมู่ ซึ่งเราจะเรียกว่า topics, แต่ละ record จะมี key, value, timestamp

Kafka มี api อยู่สี่ตัวหลัก ๆคือ 

  1. Producer API อนุญาตให้ แอพลิเคชันเผยแพร่ stream ของ เรคอร์ดไปสู่ kafka topics อันเดียวหรือหลายอันได้ 
  2. Consumer API อนุญาตให้ แอพลิเคชันติดตามมากว่า 1 topics ได้ และการทำงานของมันสามารถสร้าง stream ของเรคอร์ดเพิ่มขึ้นมาใหม่ได้ 
  3. Streams API จะทำงานกับแอพลิเคชันคล้ายๆ กับ stream cluster ที่มันจะสร้าง output จำนวนหนึ่งหรือมากกว่าหนึ่ง topics โดยเป็นการเปลี่ยนรูปจาก input streams ไปยัง output streams
  4. Connector API เปิดให้มีการ build หรือการรัน producers และ consumer ใหม่ได้ แต่ว่า แอพลิเคชันนั้นต้องมีอยู่จริงหรือว่าเป็นระบบข้อมูลโดยเฉพาะ ตัวอย่างเช่น connector ที่เชื่อมต่อไปยัง relational database จะต้องจับการเปลี่ยนแปลงทุกอย่างที่เกี่ยวกับ table 

Kafka เป็น message queue ที่เชื่อมต่อระหว่างเครื่อง client และเครื่อง server เพื่อให้การทำงานมันง่าย, มีประสิทธิภาพสูง, ใช้ภาษาด้านที่เกี่ยวกับ tcp protocol โปรโตคอลเวอร์ชันนี้สามารถเก็บได้และจะรันย้อนหลังก็ได้ ทำให้ดีกว่าเมื่อเทียบกับเวอร์ชันเก่ากว่า ซึ่งเรามีการจัดเครื่อง java client สำหรับ kafka โดยเฉพาะ แต่ว่า client สามารถใช้งานเครื่องคอมพิวเตอร์โดยการเขียนได้หลายภาษา

Topics and Logs เรามาดูเรื่องจอง topics และ logs ที่ใช้ใน kafka

หัวข้อคือเราต้องการจัดข้อมูลจำนวนมหาศาล และการดำเนินงานใน kafka ต้องได้รับการยอมรับ คือ topic จริงๆ แล้วจะเริ่มตั้งแต่ 0 หรือผู้บริโภคหลายรายต้องใช้ topic จำนวนน้อยๆก่อนที่จะเขียน data ลงไปที่มัน

ตัวอย่างเช่น data cluster จะยังคงเก็บ partitioned log เอาไว้

แต่ละ partition จะถูกเรียงลำดับ ซึ่งเรคอร์ดที่มาทีหลังใช้วิธีการต่อด้านท้ายเอา ซึ่งจำนวนของการ insert ข้อมูลเราเรียกว่าการตั้งค่า offset และแต่ละ record จะถูกเก็บอยู่ใน partition