อัปเดตเมื่อวันที่ 9 เมษายน 2018 : ปัจจุบันคุณสามารถใช้ksqlDBซึ่งเป็นฐานข้อมูลการสตรีมเหตุการณ์สำหรับ Kafka เพื่อประมวลผลข้อมูลของคุณใน Kafka ksqlDB สร้างขึ้นจาก Streams API ของ Kafka และยังมาพร้อมกับการสนับสนุนระดับเฟิร์สคลาสสำหรับ "สตรีม" และ "ตาราง"
อะไรคือความแตกต่างระหว่าง Consumer API และ Streams API
Streams API ของ Kafka ( https://kafka.apache.org/documentation/streams/ ) สร้างขึ้นจากผู้ผลิตและลูกค้าผู้บริโภคของ Kafka มันมีประสิทธิภาพมากกว่าและแสดงออกมากกว่าลูกค้าผู้บริโภคของคาฟคาอย่างเห็นได้ชัด คุณลักษณะบางอย่างของ Kafka Streams API มีดังนี้
- รองรับการประมวลผลความหมายเพียงครั้งเดียว (Kafka เวอร์ชัน 0.11+)
- รองรับความผิดใจกว้างstateful (เช่นเดียวกับไร้สัญชาติของหลักสูตร) การประมวลผลรวมทั้งสตรีมมิ่งร่วม , การรวมและwindowing กล่าวอีกนัยหนึ่งก็คือสนับสนุนการจัดการสถานะการประมวลผลของแอปพลิเคชันของคุณแบบสำเร็จรูป
- รองรับการประมวลผลตามเวลาเหตุการณ์เช่นเดียวกับการประมวลผลตามเวลาในการประมวลผลและเวลาในการส่งผ่านข้อมูล
- มีการสนับสนุนชั้นหนึ่งสำหรับทั้งสตรีมและตารางซึ่งการประมวลผลสตรีมตรงตามฐานข้อมูล ในทางปฏิบัติแอปพลิเคชันการประมวลผลสตรีมส่วนใหญ่ต้องการทั้งสตรีมและตารางสำหรับการใช้งานกรณีการใช้งานตามลำดับดังนั้นหากเทคโนโลยีการประมวลผลสตรีมขาดสิ่งที่เป็นนามธรรมทั้งสองอย่าง (เช่นไม่รองรับตาราง) คุณอาจติดขัดหรือต้องใช้ฟังก์ชันนี้ด้วยตนเอง (ขอให้โชคดี ... )
- รองรับการสืบค้นแบบโต้ตอบ (เรียกอีกอย่างว่า 'สถานะการสอบถาม ') เพื่อแสดงผลการประมวลผลล่าสุดไปยังแอปพลิเคชันและบริการอื่น ๆ
- คือแสดงออกมากขึ้น: เรือด้วย (1) รูปแบบการเขียนโปรแกรมการทำงานDSLกับการดำเนินงานเช่น
map
, filter
, reduce
เช่นเดียวกับ (2) รูปแบบความจำเป็นประมวลผล APIสำหรับเช่นทำประมวลเหตุการณ์ที่ซับซ้อน (CEP) และ (3) คุณยังสามารถรวม DSL และ Processor API
โปรดดูhttp://docs.confluent.io/current/streams/introduction.htmlสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Kafka Streams API ซึ่งจะช่วยให้คุณเข้าใจความแตกต่างของผู้บริโภค Kafka ระดับล่าง ลูกค้า. นอกจากนี้ยังมีบทช่วยสอนที่ใช้ Docker สำหรับ Kafka Streams APIซึ่งฉันบล็อกไว้เมื่อต้นสัปดาห์นี้
ดังนั้น Kafka Streams API จึงแตกต่างกันอย่างไรเนื่องจากใช้หรือสร้างข้อความไปยัง Kafka ด้วย
ใช่ Kafka Streams API สามารถอ่านข้อมูลและเขียนข้อมูลไปยัง Kafka ได้
และเหตุใดจึงจำเป็นเนื่องจากเราสามารถเขียนแอปพลิเคชันสำหรับผู้บริโภคของเราเองโดยใช้ Consumer API และประมวลผลได้ตามต้องการหรือส่งไปยัง Spark จากแอปพลิเคชันสำหรับผู้บริโภค
ใช่คุณสามารถเขียนแอปพลิเคชันสำหรับผู้บริโภคของคุณเองได้ดังที่ฉันได้กล่าวไว้ Kafka Streams API ใช้ไคลเอนต์ผู้บริโภคของ Kafka (รวมถึงไคลเอนต์ผู้ผลิต) เอง แต่คุณจะต้องใช้คุณลักษณะเฉพาะทั้งหมดที่ Streams API มีให้ด้วยตนเอง . ดูรายการด้านบนสำหรับทุกสิ่งที่คุณได้รับ "ฟรี" ดังนั้นจึงเป็นสถานการณ์ที่ค่อนข้างหายากที่ผู้ใช้จะเลือกไคลเอนต์ผู้บริโภคระดับต่ำแทนที่จะเป็น Kafka Streams API ที่ทรงพลังกว่า