カフカの一般的な面接の質問

1カフカとは何ですか

カフカが公開配布される - もともとのLinkedInによって開発され、後にApacheプロジェクトの一部となったシステムを、サブスクライブ・メッセージング、カフカが主に使用されている永続的なロギングサービスの分散、分割、冗長バックアップですストリーミングデータを処理します。

メッセージキューを使用する理由2なぜ使用カフカ、

そしてバッファクリッピング:バーストトラフィックデータは、上流及び下流は、カフカが中間バッファに役割を果たすことができ、冗長性を確保するのに十分なまたは下流の機械ない運ばないことがあり、メッセージを一時的カフカ、下流に格納されていますサービスは、自分のペースでゆっくりとしたプロセスすることができます。
デカップリングとスケーラビリティ:プロジェクトの開始、および特定の要件を決定することはできません。メッセージキューは、界面層、デカップリングの重要なビジネスプロセスとして使用することができます。唯一の合意を遵守する必要がある、それはデータプログラミングのための拡張性を得ることができます。
冗長性:多くの方法を使用することができ、生産者はそのトピックには、消費者、関係のない複数の用途への事業に複数のサブスクリプションサービスすることができ発表しました。
堅牢性:メッセージキュー要求は、短い時間のためのビジネスの消費者側が死ぬことをそうしても、積み重ねることができる、それが主な事業の正常な動作には影響しません。
非同期通信:多くの場合、ユーザーが望むもすぐにメッセージを処理する必要はありません。これは、ユーザーがメッセージをキューに入れすることができ、非同期メッセージキューの処理機構を提供しますが、すぐにそれに対処しません。その後、必要な時にそれらを処理するために行く、番号を入れてキューに配置されているメッセージの数を考えてみてください。

何3.Kafka ISRで、ARは、また表しますか?ISRテレスコピックも何を指し

ISR:で同期レプリカレプリカ同期キュー
AR:割り当てられたレプリカすべてのコピー
リーダーによって維持されているISR、いくつかの遅延からフォロワリーダー同期データ(遅延が遅延時間と数replica.lag.time.max.ms replica.lagを含みます。 max.messages二次元、最新バージョン0.10.xのみをサポートし、この寸法をreplica.lag.time.max.ms)、それ以上の閾値よりはoutof同期レプリカOSR()内に、従動ISR外に除去しますリストに、新たに追加された第1従動はOSRに格納されます。AR = ISR + OSR。

4.kafkaブローカーはやっています

内部書かれた指定されたメッセージにメッセージブローカ、プロキシ、プロデューサトピックブローカー、消費者は内部からトピックブローカーメッセージ、および実行サービス処理、中間転写ステーションの代理としてメッセージブローカ機能を保存を指定引っ張ります。

5.kafka飼育係プレーどのような役割、それは飼育係はできません

飼育係は、分散協調コンポーネント、カフカZK以前のバージョンのメタ情報記憶、個人消費、グループの経営陣の値で行うとオフセットです。考慮して、多くの要因が、自分自身をZK、全体構造の単一点の大きい確率、飼育係の役割が徐々に弱体化の新しいバージョンがあります。カフカグループの調整プロトコル、飼育係にもそれほど依存し、内部の新しい消費者の使用
しかし、ブローカーがまだZKに依存し、飼育係でカフカも検出するために使用することと選挙コントローラブローカーは生きている、というように。

リーダーとデータを同期する方法フォロワ6.kafka

カフカのレプリケーションメカニズムは、非同期レプリケーションは単純ではない、どちらも完全に同期レプリケーションです。完全な同期レプリケーションの要件のすべての生きているフォロワーは、メッセージがコミットみなされ、スループットにこのレプリケーション大きな影響をコピーされます。非同期レプリケーション、リーダーからのフォロワー非同期データレプリケーション、リーダーがハングアップした場合、長いデータがログリーダーに書かれているように、この場合には、コミット有すると考えられるとして、失うデータ、バランスのとれたカフカの使用ISR方法データを確実にするために失われたとスループットされていません。シーケンシャルディスクのリーダーとリーダー完全な使用からフォロワー缶バルク・コピー・データが大幅にメッセージをフォロワーと貧困層のリーダーの量を減らし、読み、送信ファイルが大幅複製、ディスク内部の一括書き込みのパフォーマンスを向上させ(ゼロコピー)メカニズム、。

7.どのような状況下では、ブローカーは、ISRからでキックします

リーダーは、リストはISR(イン・シンクのレプリカ)と呼ばれ、その残ったレプリカの同期のリストを維持し、各パーティションは、ISRを持つことになり、そしてダイナミックな指導者によって維持され、リーダーよりもフォロワーが多すぎるの背後にある場合、または一定の時間をかけてデータ複製要求を開始していない、リーダーは重量ISRを削除します。

なぜそんなに速い8.kafka
 
 キャッシュキャッシュファイルシステムキャッシュページキャッシュの
 
 
 ため、最新のオペレーティングシステムに書き込むためには、より速く、ほとんどの場合、ランダム書き込みメモリより予約注文の読み書きテクノロジー、ディスク書き込みを提供します。
 
 
 ゼロコピー技術は、コピーゼロコピー数減少
 
 
 メッセージバッチ処理量のバッチを。合わせた要求が小さい場合には、次によう、直上部ネットワーク限界相互作用フロー。
 
 
 消費者側の処理能力に合わせて、メッセージ取得消費のためにプルモードを使用してプルモードを引っ張ります。
 

どのように最適化速度に9.kafkaプロデューサーへ
 
 スレッドが増加
 
 
 batch.sizeを改善
 
 
 よりプロデューサインスタンスを追加する
 
 
 パーティションの数増加
 
 
 =設定ACKを-1遅延が増加した場合、:仲介するnum.replica.fetchers(同期データフォロワスレッド)を大きくすることができ、
 
 
 データセンター間伝送:ソケットバッファの設定を増やし、OS設定をバッファリングするTCP。
 

10.kafkaプロデューサは-1何時の代表的な、設定時間-1、1、ACKが0であり、データをヒットし、そしてどのような状況下では、リーダーは、メッセージがコミットみなし

カフカへの送信1(デフォルト)データの後、正常に送信された場合でもリーダーの受信に成功し、後に確認メッセージ。リーダーがダウンした場合この場合は、あなたがデータを失います。
 問題に送ら0プロデューサーのデータは、任意の帰りを待っていません。最大この場合、データ伝送効率が、データは実際に最も低い信頼性です。
 すべてのフォロワー-1 ISR内で待機するプロデューサーは最高の信頼性、データ送信完了時間を受け取った後に確認したと考えられています。すべてのレプリカのISRは、リーダーにACKを送信リーダーがコミットしなかった場合には、プロデューサーの要求を検討するために、この時間は、コミットメッセージ。

11.kafka汚れた構成は、ストリーミング消費をどのような影響の火付け役となるものを表します

unclean.leader.election.enableは真、そして、非ISRコレクションはまた、可能性の高いデータを失うことになる選挙に参加突然スパークストリーミングで、その結果、より小さくなり、オフセット消費者側での処理をストリーミング火花を得ることができることをブローカー手段ジョブがハングアップします。trueにunclean.leader.election.enableパラメータセットした場合、データの損失があり、データの不整合が発生する可能性があり、カフカの信頼性が低下します。そしてunclean.leader.election.enableパラメータがfalseに設定されている場合は、カフカの可用性それが削減されます。

行うにはどのようにISRが空で、12リーダーのクラッシュの場合

ブローカーカフカはサイド構成パラメーター提供:unclean.leader.electionを、このパラメータの二つの値が存在する
真に(デフォルト):許可リーダーが非同期コピー、原因よりも遅れると同期メッセージのコピーになり、この時間は、可能なリーダーとなり、一貫性のないニュースが起こります。
偽:コピーが同期のリーダーにすることはできませんISRが発生した場合、この時間は、リストが空である、古い指導者は、回復のために減少可用性を待っています。

13.kafkaメッセージ形式は何ですか

固定長ヘッダとからなる本体の可変長メッセージ本体によってメッセージのカフカ
バイトのヘッダマジック(ファイルフォーマット)の一部、及びCRC32の4バイト(メッセージ本文を決定するための身体が正常である)構成。
マジック値1は、魔法とCRC32との間のマルチバイトデータであるとき:属性(いくつかの関連特性を格納され、
このような)圧縮、圧縮フォーマット、等かのように、マジック値が0の場合、属性のプロパティが存在しません
メッセージ本体は、特定のキー/値のメッセージを含む、Nバイト体で構成されています

14.kafkaコンシューマ・グループのコンセプトは何ですか

また、論理的な概念は、カフカ2つのメッセージのユニキャストとブロードキャストモデルを達成するための手段です。同じトピックのデータは、異なるグループに放送されます。労働者の同じグループは、労働者はこのデータだけを取得することができます。言い換えれば、同じトピックのために、各グループは、すべて同じデータを得ることができますが、グループ内のデータは、その後、作業者は、唯一の消費者することができます。達成するために複数のスレッドまたはプロセスを使用するグループ内のワーカー、プロセスはまた、複数のマシンに分散させることができるが、労働者の数は、一般に、パーティションの数を超え、両方整数倍の関係は、好ましくは、設計カフカとして維持されませんパーティションは、(同じグループ内)ワーカー消費と仮定することができます。

かどうか15.Kafkaメッセージが失われたと消費を繰り返すことになりますか?

送信メッセージやニュース消費:カフカのメッセージの損失や重複が、二つの側面から始まるかどうかを判断するには。
図1に示すように、メッセージの送信
         2つの方法でカフカメッセージ:同期(SYNC)と非同期(非同期)、デフォルトの同期モードはproducer.typeプロパティで構成することができます。カフカの構成メッセージrequest.required.acksのプロパティで確認した生産:
0 ---全く成功したメッセージが確認応答を受信しないことを示し、
 1 ---確認するリーダーときに受信が成功した場合、
 0 ---確認フォロワーリーダーを受信し、正常に表し
要約すると、メッセージの6種類があります生産状況は、次のようなメッセージ損失シナリオのポイントを分析します:
(1)のACK = 0、なしクラスター、及びカフカ受信確認メッセージをネットワークに異常がある場合、他のバッファは、メッセージが失われる可能性があり、完全です。
(2)のACK = 1、同期モード、のみ受信成功リーダーを確認した後しかし、全く同期コピーを切っていない、データが失われる可能性があり、
2、ニュース消費
カフカの消費者ニュースの消費量は二つのインタフェース、低レベルのAPIとハイレベルなAPIがあります。

 低レベルAPI:消費者が同等のオフセットを維持するために、カフカのの完全な制御を実現することができ、
 
 
 高レベルAPI:パッケージの管理とオフセットparitionは、単純なを使用して、
 
あなたはアドバンスト・インターフェイス・高レベルAPIを使用している場合があるかもしれません問題は、消費者のクラスタからのメッセージは、新しいメッセージのオフセット値をニュースを取り出し、そして提出する際、消費者は、ハングアップする時間がなかったということですその後、成功していない消費あなたが「奇妙」でニュースを消費し、次回までに彼は姿を消しました。
ソリューション:
        メッセージが失われた場合:同期モードでは、確認応答機構が再確認メッセージの後にリーダーとフォロワー書き込まれたメッセージが正常に送信される許可-1に設定され、非同期モードを、バッファがいっぱいになっ防止するためには、あなたが設定ファイルの制限の設定がタイムアウトを阻止することはできませんバッファは、プロデューサが遮断状態にされているように一杯になったとき、
        メッセージの繰り返し:保存一意、外部媒体への消費の時間に処理されたか否かを判断するたびにメッセージを識別する。
します。https://www.javazhiyin.com/22910.htmlメッセージと解決消費者の参照を繰り返し

16.なぜカフカは、個別の読み取りと書き込みをサポートしていませんか?

カフカで、プロデューサーは、メッセージがメインの読み書きを実現するために、生産と消費モデルのマスターである、操作はコピーのリーダーと消費者の相互作用している読み、メッセージを書き込みます。
メインの読書からの書き込みは、2つの明白な欠点を持っているので、カフカは、書き込みにマスターからの読み込みをサポートしていません。

 (1)データ一貫性の問題。データは必然的に時間遅延の窓を有することになるマスターノードからノードから転送され、この時間窓は、マスタとスレーブノードとの間の一貫性のないデータをもたらし得ます。ある時点で、マスタノードとノードAからのデータの値がX、その後、マスタノードAの値を変更しているアプリケーションが変更通知にノードAからデータを読み出す前に、ノードからY、あります値は、このように、それは一貫性のないデータの問題が生成されます、日付Yまでではありません。
 
 
 (2)遅延問題。このアセンブリRedisのと同様であり、データは、これらの段階の間のノードメモリからマスタノードメモリ→→ノードからネットワークを経由→同期ネットワークにマスタノードから書き込まれ、全体の手順は、ある程度の時間を要します。カフカでは、マスタースレーブの同期は、より多くの時間がかかるのRedisよりなり、それはノードのディスクメモリからのノードから→→→→ネットワークディスクマスタノード→これらのステージプライマリ・ネットワーク・ノードのメモリを経由する必要があります。遅延に敏感なアプリケーションでは、読み込みおよび書き込みからの主な機能は適用されません。
 

17.Kafkaは、メッセージの方法を順番に反映されていますか?

カフカ各パーティションのメッセージが書面で発注され、消費の時間は、各パーティションは、消費者が順番にあるときにことを保証するために、各グループの消費者が消費することができます。
全体のトピックは、秩序を保証するものではありません。整然とした全体を確保するために話題場合、パーティションが1に調整されます。

消費は+ 1の最新ニュースを相殺するためのオフセットまたは変位電流の消費されたときに18消費者の提出は、提出しましたか?

オフセット+ 1

19.kafkaキューを遅らせるためにどのように?

カフカは、遅延機能を実現するために独自のを使用するか、JDKタイマーDelayQueueませんでしたが、時間のラウンドカスタムタイマー(SystemTimer)上の遅延機能を実装するため。タイマーと平均時間複雑DelayQueue挿入と削除操作JDKは、O(nlog(n))があり、そしてOに還元されるカフカは、車輪が挿入及び削除操作の時間複雑さに基づくことができる性能要件を満たすことができません(1)。アプリケーション時間ラウンドはカフカに特有のものではない、ネッティー、アッカ、クォーツ、飼育係やその他のコンポーネントの多くのアプリケーションシナリオは、トレース時間ラウンドの存在があります。
アレイを用いて実現下地、配列の各要素は、TimerTaskListオブジェクトを格納することができます。TimerTaskListは、円形二重にリンクされたリストである、パッケージTimerTaskEntryリアルタイマータスクのTimerTaskを内の項目のリスト。
カフカは、最後の時間にそれを促進する方法ですか?時間のラウンドを進めるのを支援するためにJDK DelayQueueの援助でカフカタイマー。これは、TimerTaskListに使用するたびに実行されるにDelayQueueに追加されます。TimingWheelでカフカの挿入や削除TimerTaskEntry作業に専念し、DelayQueue時間は、ミッションを進めるに専念。DelayQueueチームのヘッドはO(1)時間の複雑さを必要とし、ここで取得するには、秒のタイムアウトタスクが840msで、DelayQueue最初のタイムアウトの期限切れタスクリストが200msであり、そして、想像してみてください。場合には、第2、200倍低い第2残業作業に入ることは639回を実行する一方で、199回は「事前の空気」に属しているタスクリストの最初の残業の実施を強化するために取得した「空の事前あたりのタイミングアドバンス精度の推進「これが理由もなく、マシンのパフォーマンス資源のない使用をしないだろう、DelayQueueは、これによりにつながる、時間空間の少量を支援するために、ここで使用されます」。 " タイマーでカフカはTimingWheelで、「使用を理解する」を追加、および削除操作することが判明したタスクで最も良いの操作を行いますが、DelayQueueで仕事を推進し、お互いを補完する時点で最も良いを行います。
参考ます。https://blog.csdn.net/u013256816/article/details/80697456

事務の20.Kafkaは、どのように達成することですか?

参考ます。https://blog.csdn.net/u013256816/article/details/89135417

これらの場所での21.Kafkaは選挙が必要ですか?これらの地方選挙とどのような戦略?

https://blog.csdn.net/yanshu2012/article/details/54894629
----------------
免責事項:この記事では、元の記事CSDNブロガー「徐ウィーク」、フォローですCC 4.0 BY-SAの著作権契約、元のソースのリンクと、この文を添付してください、再現。
オリジナルリンクします。https://blog.csdn.net/qq_28900249/article/details/90346599

おすすめ

転載: www.cnblogs.com/mouse1983/p/11957376.html