マイクロサービス戦争:どれを選ぶべきか?分散リンクトレーシング

マイクロサービス戦争:どれを選ぶべきか?分散リンクトレーシング

[[341705]]

この記事は、陳建宇氏が執筆したWeChatパブリックアカウント「私の脳は揚げ魚です」から転載したものです。この記事を転載する場合は、Nao Nao Jin Jian Yu Leの公開アカウントまでご連絡ください。

「マイクロサービス戦争」は、マイクロサービス設計の考え方に関する一連のトピックであり、主にマイクロサービス後に発生するいくつかの矛盾/衝突に焦点を当てており、特定の知識ポイントについての詳細な議論は含まれていません。ご質問やご提案がございましたら、お気軽にお問い合わせください。

背景

マイクロサービス戦争、つまり連鎖的な障害と雪崩の P0 レベルのイベントを経験した後は、ただ手を広げて、葛優のように横たわるだけです。自己レビューを開始し、このトラブルシューティングの経験について考えてみましょう。まだインフラが整っていないため、顧客からのフィードバックを受け取った後、エラー ログを通じて問題を確認します。

ただし、エラーが連鎖すると、生成されるエラー ログが多すぎます。さまざまなサービスとさまざまなリンクがほぼ一緒に圧縮されています。修復時間は主にログをめくる作業に費やされます。比較的有効なエラー情報を見つけるには数ページかかります。

次回同様の問題が発生した場合、MTTR が長すぎて 4 つの 9 がすぐに使い果たされるため、ひどいことになります。このとき、業界でよく話題になる強力なツール、つまり「分散リンク トラッキング システム」を思い浮かべます。大まかに言えば、さまざまなアプリケーションの呼び出し依存関係を確認できます。

これらの中で最も有名なのは、Google Dapper の論文で紹介された Dapper です。 Google は、異なるチーム、異なる言語、異なるモジュールが、異なるサーバーや異なるデータ センターに展開されることで生じるソフトウェアの複雑さ (分析や特定が困難) を解決するために、分散追跡システムを構築しました。

それ以来、業界は分散リンクに刺激を受け、啓発され始めました。現在有名な分散リンク追跡システムの多くは、Google Dapper の論文に基づいて開発されており、その基本原理とアーキテクチャは似ています。これに興味があるなら、Google Dapper を詳しく調べてみると非常に興味深いです。

(Google Dapper にはトラッキング ツリーとスパンの概念があります)

選択?彼らは何ですか?

リンク トラッキングを行う場合は、分散リンク トラッキング システムとしてオープン ソース製品を選択する必要があります。完全に新しいものを作成することはまずありません。最も重要なことは、まずビジネス目標を達成することです。そこでネットで検索してみたところ、以下のような商品が多数見つかりました。

  • Twitter: Zipkin.
  • ユーバー:イェーガー。
  • Elastic Stack: Elastic APM。
  • Apache: SkyWalking (国内のオープンソース愛好家 Wu Sheng によるオープンソース)。
  • Naver: Pinpoint(韓国企業が開発)。
  • アリ:ホークアイ。
  • Dianping.com: 猫。
  • JD.com: ヒドラ。

ちょっと検索してみると、そういった製品はたくさんあることがわかり、大手企業では独自の内部リンクトラッキングシステムを導入しているところもあるそうで、非常に困った事態になっています。これらはすべて Google Dapper から進化したものですが、それらの本質的な違いは何でしょうか?どのようにしてこれほど多くの新製品が生まれるのでしょうか?

イェーガー

まず、Uber が開発した Jaeger を見てみましょう。 Jaeger は現在、Cloud Native Computing Foundation (CNCF) によってホストされており、CNCF の 7 番目のトップレベル プロジェクトです (2019 年 10 月に卒業)。

  • Jaeger クライアント: Jaeger クライアントは、OpenTracing API 用の Jaeger の言語固有の実装であり、手動で、または OpenTracing と統合するさまざまな既存のオープン ソース フレームワーク (Flask、Dropwizard、gRPC など) を通じて、分散トレース用にアプリケーションをインストルメント化するために使用できます。
  • Jaeger エージェント: UDP ポートで受け入れられたスパンをリッスンし、それらをバッチでコレクターに送信する Jaeger クライアント エージェント。
  • Jaeger Collector: 名前が示すように、Jaeger Collector はエージェント指向であり、リンク追跡情報を収集/管理するために使用されます。
  • Jaeger クエリ: データクエリとフロントエンドインターフェースの表示。
  • Jaeger Ingester: Kafka からデータを読み取り、他のストレージ メディア (Cassandra、Elasticsearch) に書き込むことができます。

Jaeger の各コンポーネントの機能を理解した後、全体的なアーキテクチャにおけるデータ フローに主に焦点を当てます。

イェーガーは非常に古典的な建築です。クライアントはリンク情報をエージェントにアクティブに送信し、エージェントはそれをコレクターに報告し、キューを通過して最終的にストレージに格納されます。その後、別の視覚管理バックグラウンドで表示および分析できます。

より実用的なアプローチは、レポート=》収集=》保存=》分析のプロセスを標準化することです。そして、Jaeger と Zipkin はアーキテクチャが似ていることがわかります。

  • Zipkin コレクター: リンク追跡情報を収集/管理するために使用される Zipkin コレクター。
  • ストレージ: Zipkin データ ストレージ。Cassandra、ElasticSearch、MySQL などのサードパーティ ストレージをサポートします。
  • Zipkin クエリ サービス: データが保存され、インデックスが作成された後、追跡情報の検索と取得に使用されます。
  • Web UI: データクエリとフロントエンドインターフェースの表示。

時代から判断すると、イェーガーはジプキンより4年遅いことになります。それは車輪の再発明なのでしょうか?読んでみると、Jaeger をやる主な理由は次のとおりです。

当時、Zipkin にスパンを送信する唯一の方法は Scribe を使用することであり、Zipkin でサポートされている唯一の高性能データ ストアは Cassandra でした。 Uber は当時どちらの技術も経験がなかったため、いくつかのカスタム コンポーネントと Zipkin UI を組み合わせて完全な追跡システムを形成するバックエンドを独自に構築することを選択しました。

詳細については、Uber Engineering の「Evolving Distributed Tracing」をお読みください。

アリ・ホークアイ

リンク追跡システムのもう 1 つの代表的なものは、次の図に示すように、Alibaba の Eagle Eye や Didi のトレースなど、主にログとストリーム コンピューティングに基づいています。

詳細については、カンファレンスで共有された「Alibaba Eagle Eye テクノロジーの解読」および「異種システムのリンク トレーシング - Didi Trace の実践」をご覧ください。ここでは詳細には触れません。リンクトレーシングの実装に興味がある方や不安な方におすすめです。

要約する

ほとんどの人は、最初にシステムを選択するときに、親和性の強いトレース システムを選択します。これは、Jaeger が Go に属し、Zipkin と Skywalking が主に Java ベースであるのと同じです。これら 3 つはすべて OpenTracing と完全に互換性がありますが、アーキテクチャは多少異なります。これらはすべて Google Dapper をベースにしているため、サポートされる基本機能とクエリ ページのエレガントさが非常に重要です。

しかし、すでに N 個のオリジナルシステムが存在するため、新しいリンク トラッキング システムに直接接続したい場合は、依然として非常に面倒です。アクセスの本来の目的は、新しいシステムだけでなく、元のシステムのトラブルシューティング/場所の問題を解決することである必要があるためです。そのため、アクセスという観点だけで考えると、既存のオープンソース追跡システムを利用する人は(履歴負債が大きくない限り)ほとんどおらず、データ量も非常に大きくなる可能性があります。

したがって、既存の方法を変更してデータをクリーンアップしてからリンク トラッキングを行うのが一般的です。ログは、特定のデータをクリーンアップし、新しい分析システムを形成し、内部ホイールを再構築するための良い出発点となることがよくあります。

さらに、過去 2 年間では、ServiceMesh に基づく「非侵入型」リンク トラッキングも人気が高まっており、有望な方向性であると思われます。その代表作の一つであるIstioはCNCFのJaegerを利用しており、JaegerはZipkinとも互換性があります。この点では、イェーガーが勝利します。

<<:  VDI ストレージ要件を評価する方法

>>:  テンセントクラウド小威「AIアシスタント」は複数のアプリケーションを備え、業界のアップグレードのための新しいAIドライバーです

推薦する

Zookeeper における Kafka のデータ構造を完全に説明する図

[[421933]] kafka_2.8.0 より前では、kafka を実行するには依然として zo...

Pinterestのシルバーマン:美しいウェブサイトの疲れたCEO

【はじめに】市場調査会社comScoreの統計によると、1月に米国におけるPinterestの月間独...

Baidu Webmaster Platformツールの使い方を教えます

SEO を行う場合、ウェブサイトのデータをリアルタイムで観察・分析し、問題があればすぐに対処する必要...

テンセントTAPDチームがCCF-SEソフトウェアエンジニアリングケースコンペティションで2つの賞を受賞

最近、第17回全国ソフトウェアおよびアプリケーション学術会議(NASAC 2018)が深センで開催さ...

異なるアプローチで機器ポータルサイトを運営するという同じ目標

計測機器は高価な工業製品であり、その価格は数千元から数万元にもなります。実験室や精密機器、設備の価格...

エンタープライズEDMマーケティングプランの設計スキルを解読する

ますます多くの企業が企業のメールマーケティングを選択し、EDMの才能を採用し、EDMマーケティングメ...

arzhost: 月額 9.5 ドル、香港/米国の 14 のデータセンター、2G メモリ/1 コア/10gNVMe/1T トラフィック/1Gbps 帯域幅

arzhost は 2009 年に設立され、仮想ホスティング、VPS、独立サーバー レンタルなどのサ...

Baiduスパイダーがウェブサイトログに304ステータスコードを返す状況を分析する

最近、Baidu スパイダーがホームページをクロールした後、Web サイトが大量の 304 ステータ...

SEOの価値は検索エンジンに反映されるだけではない

この記事はそんな中で生まれました。当時、私はグループ内のSEO初心者の友人たちと雑談をしていました。...

2020 年最大のエンタープライズ テクノロジー M&A 取引

今年は非常に騒々しい年であり、多くの企業による技術買収がほとんど注目されずに終わりました。しかし、S...

ZoroCloud: 25% オフ、香港/米国 VPS、トリプルネットワーク CN2 GIA&CU2、無料の高セキュリティ、Chatgpt/Tiktok のロック解除

Zorocloud は 4 月の特別プロモーションを実施し、四半期ごとの支払いで米国 VPS と香港...

エッジコンピューティングが人気なのはなぜでしょうか?

近年、クラウドコンピューティングの発展は誰の目にも明らかです。多くのメディアが伝えている通り、収穫の...

Flashサイトの最適化の難しさについて簡単に説明します

検索エンジン最適化業界では、Flash サイトはこれまで、最適化が最も難しいタイプのサイトとみなされ...

Docker の紹介とインストール、10 分間の入門ガイド

1. Docker とは何ですか?なぜDockerなのかショッピング モールを開発していて、ラップト...