失われていないを確保する方法を、ミドルウェアメッセージングデータを書き込むことについて話してください?【注意】アーキテクチャヒューペルジン

インタビュアー:ミドルウェアメッセージングデータの書き込みについてください話は、どのように確保するために失われていませんか?[ヒューペルジンアーキテクチャノート]は
、個々の公共の番号に注意を歓迎:ヒューペルジンアーキテクチャノート(ID:shishan100)

月曜〜金曜、午前8時30!時間に送信されブティック技術記事!

品質学習教材獲得チャネル、テキストの末尾を参照してください

内容
1.背景紹介

2、カフカ分散ストレージアーキテクチャ

3、カフカの高可用性アーキテクチャ

カフカ再現描画4は、データの損失を書き込み

5.何カフカのISRメカニズム?

データカフカ保証書失わない方法6、?

7、結論

(1)導入背景

データは、カフカが失われないことを保証するために書かれている方法についての話に皆のためのこの記事は、?

記事インタビュアーを読む前に:どのように第2の書き込みあたり何千ものミドルウェア数百メッセージング、高い並列性を実現するには?学生はカフカの着陸に書き込まれたデータがディスクに書き込まれることを知っている必要があります。

私たちは、最初の一般カフカのアーキテクチャのコア原則を表し、次のチャートを見て、ディスクへの書き込みの具体的なプロセスを考えていません。

(2)カフカ分散ストレージアーキテクチャ

彼らは毎日のデータのTBの数十を持っているのであれば、今の質問は、単一のディスクマシン上で書いていないのですか?これは明らかにああ飛ぶされていません!

だから、ここでは、ニュースで、実際には、データの分散ストレージを検討する記事ティアインターネットの巨人の前にインタビューを分散ストレージアーキテクチャと高可用性ミドルウェアがありますか?この質問は、あなたがしなければならないことです!また、ここで分析され、しかし、我々はコンバインカフカの具体的な状況が言われています。

カフカ内部には、「トピック」と呼ばれるコア概念が存在し、このトピックでは、あなたはそれがデータの集まりであることを前提としています。

あなたは今、カフカが書き込まれるように、Webサイトのユーザー行動データを持っている場合たとえば、あなたが話題に従事することができ、「user_access_log_topic」と呼ばれる、ユーザーの行動データがここに書かれています。

あなたはカフカを書かれた複数のレコードの変更の電気の供給業者のウェブサイトの注文に追加または削除したい場合はその後、それが話題に従事することができ、「order_tb_topic」と呼ばれ、順序の変更履歴テーブルであるが、ここで書かれています。

あなたは私たちは例をあげ、その後それを言うならば、データのTBの書かれた数十毎日場合、あなたはそれを考えて、ユーザーの行動トピックバーは、それを飛行するマシン上に置かれていると言いますか?

重要なことは信頼性が低いので、パーティションカフカと呼ばれる概念、トピックがあり、データのデータセットを複数のパーティションに分割することです、あなたはデータの複数のピースは、各パーティションが異なるマシン上にあってもよいと考えることができ、収納部データ。

このように、我々はまだ複数のマシンに保存された分散データの大規模なコレクションを置くことができませんか?私たちは、味を取る、図を参照してください。

(3)カフカ高可用性アーキテクチャ

しかし、この時間は、我々はそれを失うことはない、このマシン上で、マシンがダウンしているデータのパーティション管理をする場合には、ある問題を、発生したのだろうか?

だから、私たちは他のマシン上のコピーを入手することができ、各パーティションのより多くの冗長コピーを行う必要があり、そのような機械は、パーティションの損失の単なるコピーである、ダウンしています。

パーティションのコピー方法、リーダーとしてParititonの、その後、カフカの選挙でのコピー、および他のパーティションフォロワーのコピーされた場合。

唯一のリーダーパーティションは、外部の読み取りおよび書き込み操作を提供され、フォロワーパーティションは、リーダーのパーティションからデータを同期させることです。

リーダーのパーティションがダウンしていると、新しいリーダーのパーティションを読み書きするために外部のサービスを提供するよう、他のパーティションの選挙をフォロワーになる、それは、高可用性アーキテクチャを達成していないのですか?

このプロセスでは、次のチャート、表情を見てください。

(4)カフカは、データ損失を書き込みます。

今、カフカがそれを失われますどのような状況の下でデータを書き込み、見​​てみましょうか?

実際には、データはパーティションを書くのリーダーに書かれていることを非常に単純な、私たちは皆知っているが、その後、フォロワーのパーティションは、リーダーからのデータを同期します。

しかし、念のためにデータの書き込みリーダーパーティションではなく、十分な時間は、マシンが突然ダウンしたこの時点でフォロワー、リーダーPartitonを同期するには?

私たちは見て:

上記は、この時点ではデータはフォロワーpartition0でアップに同期して、マシンのダウンタイムのリーダーpartition0でされていませんがあります。

この時点で、サービスを提供するために、フォロワーの新しいリーダーとしてpartition0での選挙は、ユーザは単に書かれたよりも、データの一部が登録されていないのだろうか?

フォロワーpartition0であるので、データの最新の作品に同期されていません。

この時間は、それがデータ損失の原因となります。

(5)何カフカのISRメカニズム?

それでは、この問題は、カフカのコアメカニズムを初めて目の背中を解決するために、特にどのように言っていないキープしましょう、それがISRメカニズムがあります。

この単純なメカニズムは、自動的にそのリーダーを持っている、ISRリストを維持する各パーティションを与えることであり、またリーダーのペースを保つためにフォロワーが含まれます。

言い換えれば、限りフォロワーのリーダーが彼に同期したデータを保持するように、ISRリストに存在します。

いくつかの問題は、それ自体を発生するので、フォロワーは、過去の指導者からのタイムリーな同期データにつながることができない場合でも、フォロワーが、これはISRリストから追い出さ、「非同期」とみなされます。

私たちは、ISRがはっきりあるかを理解するために来るので、カフカが自動的に維持し、どのようなフォロワータイムリーなデータ同期リーダーに追いつくために監視されています。

どのようにデータ(6)カフカ保証書なくしませんか?

ですから、カフカ書き込まれたデータが失われていない場合は、あなたはいくつかを依頼する必要があります。

各パーティションには、少なくとも同期データのリーダーに追いつくために、ISRリストでフォロワーを持っている必要があります
少なくともパーティションリーダーの成功で、だけでなく、ISRの少なくとも一つでもフォロワーを書いた書き込みに必要とされ、毎回データが書き込まれます成功は、書き込みが成功したとみなされ
、それが正常に書き込まれみなすことができる前に、上記の2つの条件が満たされるまで生産システムは常に再試行そうすることを、これらの2つの条件が満たされていない場合、失敗するように書かれている
に従ってデータを確実にするために、適切なパラメータを設定するには上記のアイデアを書き込みカフカが失われることはありません

グッド!今、私たちは、上記のいくつかの要件を分析する必要があります。

まず、ISRリストに少なくともフォロワーを必要としなければなりません。

それはそこにはリーダーフォロワーがない、または法律は、時刻同期リーダーフォロワデータでない場合は、この事は確かに長くなることができないだろう、ああ、でなければなりません。

第二は、各時刻データが書き込まれ、書かれたよりも成功したリーダー、ISRの少なくとも一つの要件もフォロワーの成功を書きました。

私たちは、この要件は、成功書かれているリーダーとフォロワーにする必要があり、各書き込みデータことを保証するために、成功はデータの一部が二つ以上のコピーを持たなければならないことを保証するために書き込むことができますされ、下の図を参照してください。

この時間は、イベントのリーダーがダウン、あなたはフォロワーアップに切り替えることができ、その後、フォロワーは、データが失われることはありません、その場合にだけ書き込まれたデータを、持っています。

フォロワーが今は指導者、または単に書き込みリーダーでない場合は、上記のように、リーダーは、フォロワーを同期するのに十分ではないダウンタイムを飛びました。

この場合、書き込みが失敗し、その後、生産者は、上記の条件は、書き込みを続行するためには、正常に戻る満たすカフカまで再試行キープしましょう。

これは、データが失われないカフカ書き込むことができます。

(7)まとめ

実際には、カフカデータ損失の問題は、すべての側面を含む、合計します。

そのような消費者側を含む生産側キャッシュの問題、などカフカ基礎となるアルゴリズムおよび独自の内部機構は、データが失われるかもしれません。

しかし、通常の書き込みデータは、それがリーダーの切り替え時にデータ損失が発生する可能性があり、大きな問題が発生しました。これは、この問題がこの問題を解決するための生産計画について語っただけのためのものです。

終わり

(カバーは、ソースネットワークを示し、不法行為は削除しました)

次Fanger魏コードスキャン、メモ:「データ」より「秘密」品質学習教材について

大型マイクロ波サービス、分散、高い並行性、元の一連の高可用性は、道を進んでいます

次のFanger魏コードをスキャンするようこそ、持続的注意:

フペルジンアーキテクチャノート(ID:shishan100)

BATアーキテクチャより財布の中に10年以上の経験より

推奨読書:

1、してください!インタビューは私に春クラウドの基本原則を聞かないでください

2、ダブル[11]カーニバルマイクロサービスレジストリどのホストへの千万のアクセス大規模システムの背後にありますか?

3、[]春クラウドパラメータ最適化戦闘で毎秒同時チャネルの数千の性能を最適化します

ダブル11カーニバルで99.99%の可用性を保証する方法4、マイクロサービスアーキテクチャ

5、ブラザーは、白の原理を理解することができますのHadoopの方言のアーキテクチャを使用することを教えてくれ

毎秒何千回に高い同時アクセスを運ぶためにどのように6、大規模なクラスタHadoopの名前ノード

7、パフォーマンスの最適化[秘密] Hadoopの大きなファイルTBレベルのパフォーマンスの最適化時間をアップロードする方法

8は、私がTCC分散トランザクションの原理を実現インタビューを依頼しないでくださいしてください!

9、[ピットの父ああ!分散トランザクションの最終一貫性] 99.99%の可用性の実際の生産を保護する方法は?

10、私はRedisの分散ロックの原則を実現インタビューを依頼しないでくださいしてください!

11、[輝きます!Hadoopが]根本的なアルゴリズムはより10倍以上の大規模クラスタのパフォーマンスを改善する方法をエレガント参照してください?

12、ストレージをサポートする方法の億の交通システムアーキテクチャと百億データを計算します

どのように13に、フォールトトレラント分散コンピューティングシステムの億高流量システムアーキテクチャ設計

14、百億高性能アーキテクチャのトラフィックを運ぶ億のトラフィックのシステムアーキテクチャを設計する方法

15、毎秒10万のクエリを設計する方法の億の交通システムアーキテクチャ、並行性の高いアーキテクチャ

どのように16に、システム・アーキテクチャのリンク99.99%の高可用性アーキテクチャの億フルフロー設計

17、分散ロックの原則の完全な実現の7人のクリアな視界のZooKeeper

18、何であるか最終的に並行処理の方言話揮発性のJava面接の質問?

19、CAS 8同時パフォーマンスを最適化する方法のJavaのJavaのインタビューの質問についての方言の話?

20、AQSのご理解の話へのJava並行処理のインタビューの問題について方言の話?

21、公平性ロックとインタビューの質問のノンロックフェアのJava並行処理についての方言の話は何ですか?

マイクロサービスについての話方言22、読み書きロックは、Java並行処理の最適化面接の質問の登録します

360あるインタビュアー23社のインターネット企業度なし死んどの候補者を調査?(パートI)

360あるインタビュアー24社のインターネット企業は、どのように候補者デッドエンドを検討していない°?(パートII)

アドバンスシリーズの25、Javaのインタビュー1:おい、お使いのシステムアーキテクチャはなぜミドルウェアメッセージング紹介し?

26は、高度なJavaの[2]インタビューシリーズ:おい、あなたは不利な点は何ミドルウェアアーキテクチャメッセージングの導入について話しますか?

27、[ウォーキング]はオファーハーベスタ利益はBAT専門家は、技術的な面接の経験を提供友人を表します

28は、[高度なJavaのインタビューシリーズ三]おい、プロジェクト内のミドルウェアメッセージングは​​、どのように着地しているのですか?

29、[高度なJavaのインタビューシリーズ4]心臓にカット!オンラインサービスがダウンしているときに失われることはありません、どのように100%のデータを確保するには?

30、FullGCの背後にあるJVM、実際にオンライン事故をスリリングに隠さ!

31は、高い同時実行性の最適化の練習着信要求の[10]回の圧力は、あなたのシステムがそれを破ったことだろうか?

32、[高度なJavaのインタビューシリーズファイブ]メッセージングミドルウェアクラスタクラッシュし、百万生産データが失われないことを保証するために、どのように?

どのように33に、フロー・システム・アーキテクチャの億は数十同時シーン(上)の何千ものでスケーラブルなアーキテクチャを設計しますか?

十同時シーンの何千ものでスケーラブルなアーキテクチャを設計する方法の34、億台の交通システムアーキテクチャ(中)?

35、億のシステムアーキテクチャのスケーラブルなアーキテクチャを設計する方法のフロー(下)十同時シーンの何千ものでは?

36、第2弾の億のフローアーキテクチャ:お使いのシステムには、実際にそれを完璧?

37、トラフィックの数百億で、データの整合性を確保する方法の億の交通システムアーキテクチャ(上)

38、トラフィックの数百億の(中)データの整合性を確保する方法の億の交通システムアーキテクチャ?

39、トラフィックの数百億のデータの一貫性(下)を確保する方法の億の交通システムアーキテクチャ?

40、インターネットキルインタビュー:100%が失われていない完全なリンク・データ・メッセージング・ミドルウェアを確保するための方法(1)

41、インターネットキルインタビュー:どのようにメッセージミドルウェア100%完全なリンクデータを確実にするために失われていない(2)

42、大きなキルインタビュー:メッセージングミドルウェア倍のスループットの消費量を最適化するにはどのように?

43、高並行性のシナリオの下で、どのように失われない生産者がメッセージングミドルウェアにメッセージを届けることを確認するには?

44は、大きな白いと弟は、フォールトトレラント分散システムアーキテクチャを理解することができます伝える方言

45、百万同時ミドルウェアシステムからコア設計チームからのJavaの同時パフォーマンスの最適化を参照してくださいするための研究

46、[非広告、純粋なドライグッズ]英語貧しいプログラマ公式ドキュメントのアクセシビリティを読み取る方法?

47 20万人のユーザーが同時にあなたのキャッシュ・アーキテクチャを最適化する方法、ホットスポットのキャッシュにアクセスする場合は?

48は、[非広告、ピュアドライ]のJavaエンジニアの中小企業は、カウンター攻撃のBATを急いでどのように?

49は、面接の建築原理I分散型検索エンジンを依頼しないでくださいしてください!

50、[金と銀3 4シーズンは]月に面接の準備ができて実行する方法のJavaエンジニアを終了しましたか?

51、[I]自分の履歴書に必要なJavaプロジェクトが良い低いのオファーハーベスター、どのように?

52、[プラン]私の10日のインタビューのJava香港はすべてのドレインダウン、です!

53、上位のJava開発が必要:あなたが知っている固有のIDの生成アルゴリズム、分散システムを?

54、そのデータベースのスキーマを設計する方法を、ユーザーの高い並行システム日活の何百万人をサポートしていますか?

55、恥ずかしいです!マイクロ春クラウドサービスユーレカ2.xのレジストリが停止になって維持しますか?

56、[Javaの]高位必要なマイクロ春クラウドサービスレジストリのアーキテクチャを最適化する方法?

57、インタビュアー:どのように秒あたりの書き込みの何千ものミドルウェア何百メッセージング、高い並列性を実現するには?

58、[非広告、純粋なドライグッズ] 40歳年上のプログラマー、職場での競争力を維持するためにどのように?

著者:石アーキテクチャの杉のノートは
リンクします。https://juejin.im/post/5c6a9f25518825787e69e70a
出典:ナゲッツの
著作権は著者が保有しました。著者は認可商業転載してください接触、非商用の転載は、ソースを明記してください。

公開された100元の記事 ウォン称賛12 ビュー10000 +

おすすめ

転載: blog.csdn.net/hmh13548571896/article/details/104106643