23 ポイント 投稿者 frogred8 2024-05-19 | 2件のコメント | WhatsAppで共有
  • Kafka が高速な一般的な理由
    • 低レイテンシ I/O を使用(RAM)
    • 順次 I/O データ構造を使用(ログ)
    • zero-copy を適用
    • 水平スケーリングシステム
    • データ圧縮とバッチ処理
  • zero-copy とは?
    • file を socket にコピーする際に発生する負荷を改善した OS 支援インターフェース
    • Linux では sendfile コマンド
  • では Kafka は zero-copy によってどのように高速化されたのか?
    • Java で NIO パッケージに transferTo 関数が追加された
    • これを使うことで、Kafka はメッセージをユーザー空間に持ち込まず、カーネル空間からネットワークへ直接送信し、速度面で大きな利点を得た
    • 従来方式と 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 の略だと書かれていて、勘違いしていました。フィードバックありがとうございます。