23 คะแนน โดย frogred8 2024-05-19 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • เหตุผลทั่วไปที่ทำให้ 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 ความคิดเห็น

 
vwjdalsgkv 2024-05-19

ดูเหมือนว่าในเนื้อหาหลักจะสับสนเรื่อง NIO เล็กน้อย โดย NIO ไม่ได้ย่อมาจาก non-blocking I/O แต่คือ New I/O ครับ รองรับทั้งแบบ blocking และ non-blocking

 
frogred8 2024-05-19

ในเอกสารบางฉบับระบุว่าเป็นตัวย่อของ non-blocking io เลยทำให้ผมเข้าใจผิดไปเอง ขอบคุณสำหรับคำแนะนำครับ