- Những lý do phổ biến khiến Kafka nhanh
- Sử dụng I/O độ trễ thấp (RAM)
- Sử dụng cấu trúc dữ liệu I/O tuần tự (log)
- Áp dụng zero-copy
- Hệ thống mở rộng theo chiều ngang
- Nén dữ liệu và xử lý theo lô
- Zero-copy là gì?
- Giao diện do OS hỗ trợ nhằm giảm tải phát sinh khi sao chép file sang socket
- Trên Linux là lệnh
sendfile
- Vậy Kafka đã nhanh hơn nhờ zero-copy như thế nào?
- Trong Java, hàm
transferTo được thêm vào gói nio
- Bằng cách sử dụng hàm này, Kafka không đưa message lên vùng người dùng mà truyền thẳng từ vùng kernel ra mạng, nhờ đó có lợi thế lớn về tốc độ
- Khi đo hiệu năng giữa cách truyền thống và cách dùng
transferTo, cách sau cho kết quả nhanh hơn 65%
2 bình luận
Có vẻ như trong nội dung bài viết, bạn đã hơi nhầm về NIO: NIO không phải là non-blocking I/O mà là New I/O. Nó hỗ trợ cả block lẫn non-block.
Trong một số tài liệu có ghi đó là viết tắt của non-blocking io nên trước đây tôi đã hiểu nhầm. Cảm ơn bạn đã phản hồi.