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

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

[[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ドライバーです

推薦する

pzea-新しいシンガポール データ センター VPS レビュー、100M ポート

約 3 ~ 4 日前、pzea.com (別名 kvmla.pro) からシンガポール データ セン...

マルチクラウドとハイブリッドクラウド:長所と短所を評価する

マルチクラウドは実際には IT 用語です。もちろん、現在ではパブリック クラウド、プライベート クラ...

Baidu Knowsを使用してTaobao Mallを宣伝するためのヒントと詳細

Taobao の顧客プロモーションに関しては、多くの人が Baidu Knows を使用して製品や ...

SaaSを大規模に導入する時が来た

多くの SaaS ベンダーからのレポートを見ると、ますます多くの IT スタッフが SaaS の調達...

百度Kステーションが再び小規模ウェブサイトを席巻

6月28日の百度のKサイト取り締まり後、多くのウェブサイト所有者が影響を受けた可能性がある。タオバオ...

仕事の悪夢からすぐに脱出するためのロードマップ

まず前提、つまり仮定があります...仕事があなたにとって悪夢であると仮定します...そうでない場合は...

短命だった大学生向けリベート ウェブサイトで何が起こったのでしょうか?

キャンパス内を歩いていると、チラシを配ったり、果物、中古品の取引、宣伝、衣類などを売ったりしている人...

10月26日の百度のKステーションはあなたが思っているものとは違う

2012年10月26日夜22時15分、老狗の目の前で百度がKされ、私はそれを現場で捕まえた。「天津s...

オリジナル: SEO キーワード戦略 - 新しいサイトが古いサイトと競合する方法

SEO 担当者は、医療業界の競争が誰の目にも明らかであることを多かれ少なかれ知っているかもしれません...

JD.comは代理店からリチャージカードを転売していたことが発覚、中国聯通は同一カードを2度販売していたことを否定

私のリチャージカードを盗んだのは誰ですか?晨報96101ホットラインニュース(記者 岳一楽)「カード...

Baidu K-station事件:最善の解決策は、影響を受けたウェブマスターが問題を解決することです

最初の段落は導入部と呼ぶべきでしょう。最近、ウェブマスターの間で最も話題になっているのは、Baidu...

ホット検索はWeiboのトラフィックを束ねるロープですか?

「ハイキングに連れて行ってあげるよ」は他人をあざけるためによく使われるキャッチフレーズになった。 「...

史上最も高価なドメイン名トップ15、seo.comもそのリストに

ウェブサイトを作成することは難しくありませんが、ウェブページやビジネスに適したドメイン名を見つけるの...

iOS 7の脱獄ツールに注意

12 月 22 日の夜、evad3rs は突然、iOS 7.x 用の完璧な脱獄ツール evasi0n...