この記事はWeChatの公開アカウント「Hacker Afternoon Tea」から転載したもので、著者はShaoです。この記事を転載する場合は、Hacker Afternoon Tea公式アカウントまでご連絡ください。 Snuba は、Clickhouse 上に豊富なデータ モデルと、高速な取り込みコンシューマー (Kafka から直接データを取得) およびクエリ オプティマイザーを提供するサービスです。 Snuba はもともと、Postgres と Redis の組み合わせを置き換えて、Sentry エラーに関する集計データを検索および提供するために開発されました。それ以来、現在の形に進化し、複数のデータセットで時系列関連の Sentry 機能のほとんどをサポートするようになりました。 関数
Sentry の使用例:
Snubaを使い始めるこれは、Sentry 開発環境で Snuba をすばやく起動するためのガイドです。 必要条件 Snuba は次のことを前提としています。
これらのサービスを実行する簡単な方法は、sentry をセットアップして、以下を使用することです。
Snuba ではすべてが UTC 時間で実行されていると想定していることに注意してください。そうしないと、タイムゾーンの不一致の問題が発生する可能性があります。 セントリー + スヌーバ ~/.sentry/sentry.conf.py に次の行を追加/変更します。
走る:
オリジナルの Clickhouse クライアント (psql に類似) にアクセスします。
データはsentry_localテーブルに書き込まれます: select count() from sentry_local; 設定 設定はsettings.pyで確認できます。
Snuba アーキテクチャの概要Snuba は、Clickhouse を利用した時系列データ ストレージ サービスです。これは、Snuba が提供するクエリの種類に適した列指向の分散データベースです。
データは Clickhouse テーブルとマテリアライズド ビューに完全に保存され、入力ストリーム (現在は Kafka トピックのみ) を介して取り込まれ、ポイントインタイム クエリまたはストリーミング クエリ (サブスクリプション) を介してクエリできます。 ストレージ Clickhouse がバッキング ストアとして選択されたのは、Snuba に必要なリアルタイム パフォーマンス、分散および複製された性質、ストレージ エンジンに関する柔軟性、および一貫性の保証の間で適切なバランスが取れているためです。 Snuba データは Clickhouse テーブルと Clickhouse マテリアライズド ビューに保存されます。テーブルのターゲットに応じて複数の ClickHouse ストレージ エンジンを使用します。
Snuba データは、データ モデルの独立したパーティションを表す複数のデータセットに編成されます。詳細については、Snuba データ モデルのセクションを参照してください。 摂取 Snuba は、行を挿入するための API エンドポイントを提供しません (デバッグ モードで実行している場合を除く)。データは複数の入力ストリームからロードされ、一連のコンシューマーによって処理され、Clickhouse テーブルに書き込まれます。 コンシューマーは 1 つ以上のトピックからデータを消費し、1 つ以上のテーブルに書き込みます。これまでのところ、複数のコンシューマーがテーブルに書き込んでいることはありません。これにより、以下で説明する一貫性の保証の一部が可能になります。 データの取り込みはバッチ処理で最も効果的に機能します (Kafka の場合、特に Clickhouse の場合)。私たちのコンシューマーはバッチ処理をサポートしており、Kafka から取得されたイベントのバッチが ClickHouse に少なくとも 1 回は配信されることを保証します。 Clickhouse テーブル エンジンを適切に選択して行の重複を排除することで、最終的な一貫性を受け入れる場合に、正確に 1 回のセマンティクスを実現できます。 クエリ 最も単純なクエリ システムは時間ポイントです。クエリは SnQL 言語 (SnQL クエリ言語) で表現され、HTTP ポスト呼び出しとして送信されます。クエリ エンジンはクエリ (Snuba クエリ処理で説明されているプロセス) を処理し、それを ClickHouse クエリに変換します。 ストリーミング クエリ (サブスクリプション エンジンを介して実行) を使用すると、クライアントはクエリ結果をプッシュ方式で受信できます。この場合、HTTP エンドポイントにより、クライアントはストリーム クエリを登録できます。次に、コンシューマーはトピックにサブスクライブされ、更新のために関連する Clickhouse テーブルにデータを入力し、クエリ エンジンを通じて定期的にクエリを実行し、サブスクライブされた Kafka トピックで結果を生成します。 データの一貫性 Snuba では、さまざまな保証を提供するために、さまざまな一貫性モデルが共存しています。 デフォルトでは、Snuba は最終的に一貫性を持ちます。クエリを実行する場合、デフォルトでは単調な読み取りは保証されません。これは、ClickHouse がマルチリーダーであり、クエリが任意のレプリカにヒットする可能性があり、レプリカが最新であるという保証がないためです。さらに、デフォルトでは、ClickHouse が単独で一貫した状態に到達するという保証はありません。 クエリを実行する前に ClickHouse に一貫性を強制的に達成させ (FINAL キーワード)、コンシューマーが書き込む特定のレプリカにクエリがヒットするように強制することで、特定のクエリで強力な一貫性を実現できます。これは基本的に、ClickHouse を単一のリーダー システムのように使用し、連続的な一貫性を実現します。 スヌーバのセントリー配備このセクションでは、主なデータ フローを示しながら、Sentry 展開で Snuba が果たす役割について説明します。 Snuba を単独で展開した場合、これは役に立ちません。 エラーとトランザクションのデータフロー 図の上部にあるメインセクションは、イベントおよびトランザクション エンティティの取り込みプロセスを示しています。これら 2 つのエンティティは、Sentry およびパフォーマンス製品全体の問題/エラー関連の機能の大部分を提供します。 このパイプラインの情報を提供する、エラーとトランザクション間で共有される Kafka トピック (イベント) は 1 つだけです。このトピックには、エラー メッセージとトランザクション メッセージが含まれています。 エラー コンシューマーは、イベント トピックを使用して、ClickHouse エラー テーブルにメッセージを書き込みます。コミット後、snuba-commit-log トピックにもレコードが生成されます。 エラー アラートは、エラー サブスクリプション コンシューマーによって生成されます。これは、メイン イベント トピックと snuba-commit-log トピックの両方を消費する同期コンシューマーであるため、メイン コンシューマーと同期して続行できます。 同期されたコンシューマーは、Clickhouse にクエリを実行し、結果トピックで結果を生成することでアラートを生成します。 トランザクションは同じですが独立したパイプラインに存在します。 エラー パイプラインには、置換トピックへの書き込みという追加のステップがあります。 Sentry は、イベント トピックでエラー ミューテーション (マージ/アンマージ/再処理など) を生成します。次に、エラー コンシューマーはそれらを置換トピックに転送し、置換コンシューマーによって実行されます。 プロジェクト内のイベントを順番に処理できるようにするには、イベント トピックを Sentry プロジェクト ID によって意味的に分割する必要があります。これまでのところ、これはアラートと交換の要件です。 セッションと成果 セッションと成果は非常によく似ており、よりシンプルな方法で動作します。特に、セッションはリリースの健全性機能を強化し、成果は主に Sentry 統計ページにデータを提供します。 どちらのパイプラインにも独自の Kafka トピック、Kafka コンシューマーがあり、Clickhouse の独自のテーブルに書き込みます。 変更データキャプチャパイプライン パイプラインはまだ建設中です。 cdc トピックを使用し、Clickhouse に 2 つの別々のテーブルを作成します。 |
<<: クラウド ネイティブはどこにでもあります。デジタル変革で道に迷うことを避けるにはどうすればよいでしょうか?
>>: ついに誰かがDevOpsをわかりやすく説明してくれた
中国のインターネットは、一言で言えば、上半期にライブストリーミングを推進し、下半期に検索で競争すると...
Hostyun については多くの人がよく知っています。10 年以上運営されているこのビジネスが今でも...
「クラウド コンピューティング」という概念は 2006 年に初めて提案されて以来、もはや奇妙な概念で...
Hostodoは先週、Alipay決済を正式にサポートし、中国ユーザーの購入を容易にした。 Host...
企業ウェブサイトが百度プロモーションを行うにせよ、SEOを行うにせよ、最終的な目標は受注を獲得するこ...
Virmach の安価な Windows VPS は、価格面で業界をはるかに上回っていますか? vi...
蔡旭坤ファンと周杰倫ファンによる微博超話題戦争からほぼ1年が経ち、微博は突如ショート動画分野への参入...
Baidu が Green Radish Algorithm を導入して以来、外部リンクに関して業界...
SEO に取り組み始めて以来、アルゴリズムは絶えず更新されてきました。では、Baidu のアルゴリズ...
今日のデジタル世界では、あらゆるアプリケーションやデバイスがクラウドでデータを保存または処理している...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス新型コロナウイルス肺炎の...
7 月 4 日が米国で何曜日かはわかりませんが、lunarpages の Web ホスティングでは ...
1. 音楽ウェブサイトは著作権者から5日以内に有料サービスを試すよう促されている新浪科技は6月3日朝...
[[7040]]インテル最高技術責任者、ジャスティン・ライトナー1980 年代、インテルの最高技術責...
ウェブマスターであろうと SEO 最適化担当者であろうと、Baidu Space をよくご存知だと思...