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

**URL:** <https://discuss.dataengineercafe.io/t/kafka-zero-copy/153>\
**Category:** Kafka\
**Tags:** kafka, sendfile, zero-copy\
**Created:** [April 3, 2022, 1:39pm UTC](https://discuss.dataengineercafe.io/t/kafka-zero-copy/153 "2022-04-03T13:39:27Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![zkan](https://yyz1.discourse-cdn.com/flex035/user_avatar/discuss.dataengineercafe.io/zkan/32/2_2.png) [@zkan](https://discuss.dataengineercafe.io/u/zkan)\
**Post date:** [April 3, 2022, 1:39pm UTC](https://discuss.dataengineercafe.io/t/kafka-zero-copy/153/1 "2022-04-03T13:39:28Z")

</div>

ไปเจอบทความของ [ByteByteGo](https://blog.bytebytego.com/p/why-is-kafka-fast?s=r) มาครับ เค้าวาดรูปอธิบายเหตุผลหนึ่งว่าทำไม Kafka ถึงเร็ว ออกมาให้เข้าใจง่ายดี เลยเอามาแปะให้ได้ลองอ่านกัน

 ![Why is Kafka Fast?](https://canada1.discourse-cdn.com/flex035/uploads/dataengineercafe/original/1X/22e6b2e95d0fcf5a18341edaac7d4a332b51cc11.jpeg)

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

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

> **[Linux Zero-Copy Using sendfile()](https://medium.com/swlh/linux-zero-copy-using-sendfile-75d2eb56b39b)**
>
> sendfile() has been gradually becoming prevalent over the past few years

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

---

<div class="post-metadata">

**Author:** ![zkan](https://yyz1.discourse-cdn.com/flex035/user_avatar/discuss.dataengineercafe.io/zkan/32/2_2.png) [@zkan](https://discuss.dataengineercafe.io/u/zkan)\
**Post date:** [April 3, 2022, 1:48pm UTC](https://discuss.dataengineercafe.io/t/kafka-zero-copy/153/2 "2022-04-03T13:48:29Z")

</div>

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

- [https://www.geeksforgeeks.org/why-apache-kafka-is-so-fast/](https://www.geeksforgeeks.org/why-apache-kafka-is-so-fast/)
- [Why Kafka Is so Fast. Discover the deliberate design… | by Emil Koutanov | The Startup | Medium](https://medium.com/swlh/why-kafka-is-so-fast-bde0d987cd03)
- [What makes Apache Kafka so Fast?. Kafka supports a high-throughput… | by Sunny Garg | Medium](https://medium.com/@sunny_81705/what-makes-apache-kafka-so-fast-71b477dcbf0)
- [Here’s what makes Apache Kafka so fast](https://www.freecodecamp.org/news/what-makes-apache-kafka-so-fast-a8d4f94ab145/)
- etc.

---

<div class="post-metadata">

**Author:** ![zkan](https://yyz1.discourse-cdn.com/flex035/user_avatar/discuss.dataengineercafe.io/zkan/32/2_2.png) [@zkan](https://discuss.dataengineercafe.io/u/zkan)\
**Post date:** [August 22, 2022, 4:16am UTC](https://discuss.dataengineercafe.io/t/kafka-zero-copy/153/3 "2022-08-22T04:16:29Z")

</div>

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

> **[System Design: 5 สิ่งที่ช่วยอธิบายว่าทำไม Kafka ถึงเร็ว](https://goangle.medium.com/system-design-5-%E0%B8%AA%E0%B8%B4%E0%B9%88%E0%B8%87%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%8A%E0%B9%88%E0%B8%A7%E0%B8%A2%E0%B8%AD%E0%B8%98%E0%B8%B4%E0%B8%9A%E0%B8%B2%E0%B8%A2%E0%B8%A7%E0%B9%88%E0%B8%B2%E0%B8%97%E0%B8%B3%E0%B9%84%E0%B8%A1-kafka-%E0%B8%96%E0%B8%B6%E0%B8%87%E0%B9%80%E0%B8%A3%E0%B9%87%E0%B8%A7-eb2e706db113)**
>
> ทำไม Kafka ถึงทำงานได้เร็ว? ที่ใครหลายๆคนบอกว่ามัน high-throughput, highly distributed, fault-tolerant low-latency ในการส่ง และ รับ message…
