เหตุผลหนึ่งที่ทำให้ Kafka เร็ว --- การดำเนินการ Zero-Copy

ไปเจอบทความของ ByteByteGo มาครับ เค้าวาดรูปอธิบายเหตุผลหนึ่งว่าทำไม Kafka ถึงเร็ว ออกมาให้เข้าใจง่ายดี เลยเอามาแปะให้ได้ลองอ่านกัน

เหตุผลหนึ่งที่ Kafka เค้าสามารถทำ low latency ตอนส่ง message ได้เนี่ย เค้าใช้การดำเนินการที่เรียกว่า “Zero-Copy” ครับ ถ้าดูจากรูปด้านบนจะมีอยู่ 2 แบบคือ แบบที่ไม่ได้ใช้ zero-copy กับแบบที่ใช้ zero-copy ซึ่งเราจะเห็นว่าแบบที่ 2 เนี่ย มันไม่ได้คัดลอกไฟล์เข้าไปที่ application buffer เลย ทุกอย่างทำอยู่ใน kernel context และส่งออกไปที่ network interface controller/card (NIC) ผ่านคำสั่ง sendfile

ถ้าใครสนใจเรื่อง Zero-Copy เพิ่มเติม ผมแนะนำให้ลองอ่านบทความด้านล่างนี้ครับ

เค้าเขียนโปรแกรมเล็กๆ มาทำ performance benchmark ให้เห็นไปเลยว่า sendfile นี่มันเร็วจริงๆ นะ :sunglasses:

2 Likes

เหตุผลอื่นๆ ก็มีคนเขียนไว้เพียบเลย ลองเซิช Google กันได้นะ

1 Like

อันนี้เป็นอีกบทความที่ดีงามอธิบายว่าทำไม Kafka ถึงเร็ว

1 Like