書き込み処理
端によってカフカサービスKafkaApis
のhandle()
要求を処理統一する方法は、ApiKeys
こと列挙handle()
要求処理方法の種類、及びその場合PRODUCE
種類、クライアントがメッセージを送信し、コピー管理処理にメッセージを渡すプロデューサを発現しました。
マネージャーのコピーは、パーティションのコピーのログファイルのリーダーにメッセージを追加しかし、実際には直接ディスクに書き込まれていない、セグメントセグメントカフカはログキャッシュテーブルにジャンプしますConcurrentSkipListMap
。ログに書き込まれたときに、最初のセグメントがキャッシュから見える、見つかった場合は、レコードに追加段落で、レコードがログファイル、インデックスファイル、ファイルのタイムスタンプが含まれています。ログファイルが書き込まれFileChannel
、インデックスファイルとタイムスタンプのファイルが書き込まれますMappedByteBuffer
で。最後に、バックグラウンドスケジューラは、定期的にディスクに永続的なセグメントファイルを更新します。
セグメントキャッシュはを通じて、適し見つからない場合はFileChannel
、新しいセグメントを開くと、セグメントマッピングはディスクファイルを返し、パッケージングセグメントは、その後、次回の使用のためにキャッシュテーブルに追加のログをジャンプしています。
処理フローログを書きます
インデックスとオフセット処理の流れを書きます
読み込みプロセス
要求がある場合はFETCH
、クライアントを引っ張って消費者を代表するタイプは、要求を送信し、同様に、それはレプリカマネージャのプロセスに要求を渡します。
レプリカマネージャログへの書き込み、キャッシュへのジャンプテーブルのセクションが、読み出した、ジャンプがセグメント・テーブルから直接得ることができる、セグメントに読み出し動作を開始します。まず、バイナリサーチアルゴリズムを見つけるためにmmap
インデックスファイルを、インデックスファイルには、ログ記録に応じて検索網羅オフセットFileChannel
位置をここでログ・ファイル、および最後に、リターンを引くために必要なログ・オフセットに従ってセグメントとサイズを取得します消費者に。