- เหตุผลทั่วไปที่ทำให้ Kafka เร็ว
- ใช้ I/O แบบหน่วงต่ำ (RAM)
- ใช้โครงสร้างข้อมูล I/O แบบลำดับต่อเนื่อง (log)
- ใช้ zero-copy
- เป็นระบบที่ขยายแบบแนวนอนได้
- การบีบอัดข้อมูลและการประมวลผลแบบเป็นชุด
- zero-copy คืออะไร?
- อินเทอร์เฟซที่ระบบปฏิบัติการรองรับเพื่อปรับปรุงภาระที่เกิดขึ้นเมื่อคัดลอก file ไปยัง socket
- ใน Linux คือคำสั่ง
sendfile
- แล้ว Kafka เร็วขึ้นจาก zero-copy อย่างไร?
- ใน Java มีการเพิ่มฟังก์ชัน
transferTo เข้าไปในแพ็กเกจ nio
- Kafka ใช้สิ่งนี้เพื่อส่งข้อความจากเคอร์เนลไปยังเครือข่ายได้โดยตรง โดยไม่ต้องดึงข้อความขึ้นมายัง user space จึงได้เปรียบด้านความเร็วอย่างมาก
- เมื่อวัดประสิทธิภาพระหว่างวิธีเดิมกับวิธีที่ใช้
transferTo พบว่าวิธีหลังเร็วกว่า 65%
2 ความคิดเห็น
ดูเหมือนว่าในเนื้อหาหลักจะสับสนเรื่อง NIO เล็กน้อย โดย NIO ไม่ได้ย่อมาจาก non-blocking I/O แต่คือ New I/O ครับ รองรับทั้งแบบ blocking และ non-blocking
ในเอกสารบางฉบับระบุว่าเป็นตัวย่อของ non-blocking io เลยทำให้ผมเข้าใจผิดไปเอง ขอบคุณสำหรับคำแนะนำครับ