ブルックリン:LinkedInのリアルタイム・データ・ストリームの近くにオープンソース大規模な拡張性と信頼性の高い分散システム

       最近、LinkedInは新しいオープンソースのツールブルックリン、分散型リアルタイムに近いストリーミングデータやスケーラブルなサービスを提供しています。ブルックリンは、データストリームと一日あたり2兆数千件のメッセージを処理し、2016年から実行しているLinkedInのライン上で開始します。  

なぜ、ブルックリンを開発

      高速、大容量のデータのLinkedInの信頼性の高い伝送は、データ・ストレージとストリーミングシステムの多様性の急速な増加によって引き起こされる非常に深刻な問題は、ブルックリンのLinkedInの建物の側面は、システムの拡張性を解決するために使用されるように、解決すべき唯一の問題ではありません新システムは、データの大きさの両面でスケーラブルなことする必要はなく、システムの多様性を広げることができます

ブルックリンとは何ですか

ブルックリンは、高い信頼性を有する、異なるメッセージ・システムとストリーミングデータの複数にわたるデータ記憶のための分散システムです。それはあなたが消費と発電データの新たなシステムを実現するために、機能を拡張することができ、書き込みに新しいブルックリン消費者と生産による抽象のシリーズを、公開しています。


Brooklin 用例


変換器ブリッジとチェンジ・データ・キャプチャ:ブルックリン例の二つの主要なカテゴリがあります。

ブリッジ・データ・ストリーム(流れ橋)

データは、異なる環境(企業のデータセンターとパブリッククラウド)、場所または異なるグループの展開で配布することができます。一般的に、アクセス機構、シリアル化形式、コンプライアンスとセキュリティ要件のため、追加的な複雑さを追加します。これらの環境の間でデータを送信するためのブリッジとしてブルックリン。例えば、ブルックリンは、異なるクラウドサービス間でのデータセンター内の異なるクラスタ間で異なるデータセンター間でデータを転送することができます。


図2  仮のシナリオ::ブルックリンクラスタは、データストリームを転送するブリッジとして使用され、キネシスカフカからの着信データは、その後、カフカEventHubsから渡し


       異なる環境間ブルックリンに排他的サービスを伝送されたデータのストリームであるために、すべての複雑さは、サービスで管理することができ、開発者は、むしろデータの送信よりも、プロセスに焦点を当てることができますまた、この集中管理、ホストされた、スケーラブルなフレームワークができ、組織がポリシーやデータガバナンスの実施を促進することができますイラストは、JSON形式でなければならない、そのようなすべてのデータストリームとして、ブルックリンの全社的なポリシー適用を構成することができ、または任意のデータ・ストリームを暗号化する必要があります。

ミラーリングカフカ

        ブルックリンの前に、カフカクラスタ間のデータ伝送は、カフカMirrorMaker(KMM)によって達成されるが、大量輸送に問題があります。ブルックリンは、一般的なブリッジのデータストリームを送信するように設計されているので、容易に壮大なスケールのデータ伝送をカフカができます。

       LinkedInのでは、変換器ブリッジとして使用する例は、データセンターとクラスタの間のブルックリンミラーカフカカフカデータです。


図3  仮定のシナリオ::ブルックリンを使用して、ユーザーがデータのすべてにアクセスすることを可能にすることは、データでは非常に容易になります。各データセンタは、単一のクラスタは、複数のブルックリンソース/宛先ペアを扱うことができます。

ブルックリンミラーカフカプログラムデータは、LinkedInのを介して大規模に試験されており、完全にKMMを置換されています。その新機能からKMMの痛みのポイントのいくつかを解決し、利益のためにこのプログラムを使用することにより、これらの機能については後述します。

特性1マルチテナント(マルチテナント)

KMK展開モデルでは、ミラーは2つのだけのクラスターカフカの間で行うことができます。これは、構築する各データパイプラインのために作成した結果は管理が非常に困難である引き起こす可能性があり、数百KMMクラスター、があるだろうということで、KMMです。しかし、ブルックリンは、同時に異なるデータパイプラインを管理するように設計されたので、我々はそれだけでクラスタブルックリンを展開する必要があります。図3と図4を比較することにより、あなたは、より直感的な感覚を持つことができます。


図4は、シーンと仮定する:KMMは、データセンター間のミラーリングデータを使用して達成しました

特性2動的プロビジョニングおよび管理(動的な構成および管理)

       簡単に(また、データストリームとして知られている)新しいデータパイプラインの作成を完了し、既存のデータパイプラインを変更することができるだけでREST HTTPコールのエンドポイントに、ブルックリンを使用してください。カフカは、ユースケースをミラーリングするために、このエンドポイントは、非常に簡単に静的な設定を変更して展開することなく、ホワイトリストを新しいミラーミラーパイプを作成したり、既存のパイプラインを変更することができます。

       パイプラインは、同じ画像のクラスタを共存させてもよいが、制御および個々にブルックリンに各パイプを構成することもできます。たとえば、あなたは、任意の他のチャネルに影響を与えずに、パイプラインに多くのリソースを追加するには、画像のホワイトリストやパイプラインを編集することができます。また、需要ブルックリンは時に一時的または操作パイプを修正する非常に有用である、個々のパイプを中断し、再開できるように。カフカのためのユースケース、ブルックリンのサポートのポーズをミラーリングまたはパイプライン全体、ホワイトリスト単一のトピック、テーマ、あるいは単一のパーティションを再開します。

特徴3診断(診断)

       ブルックリンにも需要データストリームの診断RESTエンドポイント、照会状況を開示しました。このAPIは、簡単に任意の単一のトピックパーティションの遅れや誤りを含むパイプラインの内部状態を、照会することができます。診断終点ので、すべてのブルックリンのクラスタ全体を見つけ統合し、それは、ログファイルをスキャンすることなく、問題の特定のパーティションの迅速な診断に有用です。

特殊機能(特殊機能)

       ブルックリンをKMM代わりに使用されるので、ブルックリンの安定性と操作性を最適化できます。また、カフカミラーのためのいくつかの特別な機能を提供しています。

  1.    障害分離:     最も重要なことは、私たちはより良い障害分離を達成するために努力ということですので、パイプライン全体に影響を与える特定のパーティションまたはトピックをミラーリングエラーがクラスタまたはKMMの使用を好まないだろう。ブルックリンは、自動的にこれらの問題は、パーティション・レベルの検出誤差にパーティションをミラーリングしている一時停止することができますこれらのパーティションは自動的に自動的に一時的なエラーのために特に有用で手動の介入の必要性を排除し、設定可能な期間の後に復元懸濁させることができます。同時に、他のパーティションに対処し、パイプは影響を受けません。
  2.  ブラシレスモードが生成:レイテンシとスループットミラーを向上させるために、ブルックリンカフカミラーはまた、パーティションレベルでカフカトラック進捗を消費ブラシレス生成モード(flushless-生産モード)で実行することができます。チェックポイントは、各パーティションではなく、パイプラインレベルのために完成されています。これは、ブルックリンは高価カフカは通常、数分で全体のパイプラインのストールを作ることができ、同期ブロッキング呼び出しであると呼ばれるプロデューサーを、リフレッシュを避けることができます。

     代替ブルックリンKMMを使用することにより、LinkedInはダース以上に数百から減少クラスタをミラーリング。同時に、それはまた、新しい機能と反復改良を加えるの速度を向上させることができます。


チェンジ・データ・キャプチャ(CDC)

       ブルックリン第二の主たる実施形態では、データのキャプチャを変更するために使用されます。これらのケースでの目標は、アップデートの低遅延ストリーミングデータベースストリームの形式を変更することです。例えば、LinkedInの最も実際のデータ(例えば操作、接続、およびプロファイル情報)は、種々のデータベースに存在します。一部のアプリケーションでは、新しいジョブをリリースするプロファイルの新しいプロの接続や更新のメンバーを作成する際に知ることに興味を持っています。そして、これらのそれぞれは、オンラインこれらの変化を検出するための高価なクエリのデータベースではなく、これらのデータベースの更新のリアルタイムストリーミングへの応用をしないように興味があります。チェンジ・データ・キャプチャ・イベントを生成ブルックリンを使用しての最大の利点の1つは、アプリケーションやオンラインストレージリソースの分離間のより良いですアプリケーションは、このように、データベースのダウンタイムのリスクを回避する、独立したデータベースの拡張することができます。LinkedInのは、チェンジ・データ・キャプチャ・ソリューション構築するには、Oracle、エスプレッソやMySQLのようブルックリン、私たちを使用し、さらに、ブルックリンスケーラブルモデルは新しいコネクタを作成するのに役立ちますが、CDCは、任意のデータベース・ソースのサポートを追加しました。


                                         図5

特徴1つのブートストラップのサポート(初期化サポート)

       時には、増分更新を使用する前に、アプリケーションは、データストレージの完全なスナップショットが必要な場合があります。アプリケーションを最初に起動またはによる処理変更のロジックとデータセット全体を再処理する必要があるとされている場合、このような状況が発生することがあります。ブルックリンコネクタモデルは、このようなユースケースをサポートするように拡張することができます。

特徴2トランザクションサポート(トランザクションのサポート)

      多くのデータベースは、これらのソースのトランザクションをサポートしている、ブルックリンコネクタは、トランザクション境界の維持を確保することができます。

詳しい情報

      その構造と機能の概要を含むブルックリンの詳細については、私たちの以前の参照してください。プロジェクトのブログの記事を

      ブルックリンの最初のバージョンでは、カフカの導入は、あなたが私たちの提供する使用することができ、ミラーリングの簡単な指示ドライブをテストし、スクリプトを。私たちは、より多くのソースとデスティネーションのための支援を強化するためのプロジェクトにしようとしている-お楽しみに!

未来

        2016年10月以来、ブルックリンに成功LinkedInの生成環境上で実行されています。置き換えられているデータバス、当社のブリッジ・ソリューション・フローは、当社のカフカクラスタの1兆件のメッセージ日、多くのミラー番号などのAzure、AWSとLinkedInの間でデータを移動され、変更のソースとOracleエスプレッソキャプチャソリューションとして。

        私たちは、他のデータソース(MySQLの、コスモスDB、AzureのSQL)と目標(Azureブロブストレージ、キネシス、コスモスDB、Couchbaseの)をサポートするためのコネクタを構築していきます。我々はまた、トラフィック需要に基づいブルックリン、例えば、自動的に拡張機能を最適化し、スループット能力だけでなく、追加の読み取りと鏡画像最適化プログラムの書き込みを高めるために解凍して再圧縮メッセージをスキップする機能を追加する予定。

プロジェクトアドレス

Githubの

概要

  1. ブルックリンは、分散型データストリーミングサービスでは、データ・ストレージ・システムとメッセージの異なるタイプのインタフェースをとることができます
  2. ブルックリンは今達成したカフカのミラーリング、およびマルチテナント、動的な構成および管理を提供し、診断、障害分離、ブラシレスは極細モードを生成します。
  3. ブルックリンにもCDC機能を提供しますが、現在はOracleとエスプレッソソース、サポートしていないのMysql、AzureのSQLおよび他のコネクタを


おすすめ

転載: juejin.im/post/5d4a47c5f265da03b31bb703