PHP での分散トレースの簡単な紹介
要約: マイクロサービスを実装して以来、私たちは多くの問題に遭遇しました。最大の問題は、障害をトラブルシューティングする方法です。通常、サービス指向のインターフェイスは複数のサービスに依存しており、依存するインターフェイスの速度がインターフェイスのサービス品質に直接影響します。この種の依存関係によって引き起こされる速度の低下は、オンラインでは非常に一般的ですが、結局のところ、トラブルシューティングは簡単ではありません...
マイクロサービスの実装以来、私たちは多くの問題に遭遇しました。最大の問題は、障害をトラブルシューティングする方法です。通常、サービス指向のインターフェイスは複数のサービスに依存しており、依存するインターフェイスの速度がインターフェイスのサービス品質に直接影響します。
依存性に起因するこの種の速度の低下は、オンラインでは非常に一般的ですが、トラブルシューティングが簡単ではありません。その理由は、多数のログ開発者がログを通じてオンラインで追跡されているためであり、これはあまり直感的ではなく、一部の企業開発者はログを使用して追跡しているためです。オンラインでは具体的な実装を見ることができません。一般に、オンラインで発生する可能性の低い障害は、システム内の隠れた危険を表します。トラフィックが増加すると、これらの隠れた危険が増幅され、同様の事態を回避するために、多くのことを行う必要があります。最も直感的なのは、統計分析に分散トレース システムを使用することです。
専門家がオンラインのパフォーマンスを最適化する方法やパフォーマンスを向上させる方法について話しているのをよく見かけますが、実際には、可能性の低い障害をどのように発見するかについて言及されていません。分散型追跡システムは大規模なインターネット企業では非常に一般的ですが、中小企業にはこのシステムを実装するための技術力がありません。私たちの観点からすると、たとえトラフィックが非常に少ないとしても、システムは依然として会社にとって非常に重要であり、問題を見つけることができて初めてそれを解決することができるのです。これが私が常々抱いている目的です。実装されました。
分散追跡システムの具体的な実装には、パフォーマンスのキャプチャ、ログの書き込み、ログの収集、ログの送信、ログの保存、ログのインデックス、ログの分析、最終的なマージ表示を実現する必要があり、システムはそれらに対処できます。高流量システムへの影響。たとえば、各リクエストがインターフェイスごとに 1,000 個のログを生成する場合、QPS 2000 サーバーは、リクエストが 5 つのインターフェイスに依存する場合、オンライン ビジネスがより複雑でトラフィックが大きい場合、1 秒あたり 1,000 万個のログを生成します。時間が経過すると、この値は増加します。大規模なインターネット企業は、数十億のトラフィックに耐えることができる多くの分散追跡システムを備えていますが、小規模企業にとって、このアーキテクチャの多くには、依存する分散メッセージ システム、分散ストレージ、分散コンピューティング、分散コンピューティングなどの大きな負担が伴います。これらだけでも少なくとも 6 台以上のサーバーを使用することになり、通常の小規模企業にとっては費用対効果が高くありません。 今回は 2 種類のオープンソース分散トラッキングを用意しています。1 つは、PV 2000w ビジネス システム (決済システムなど) をサポートできる、中小規模のインターネット企業向けのスタンドアロン バージョンです。数十億の分散 PV をサポートする分散追跡システムもあります。現在、Fiery のスタンドアロン バージョンが公開されました (https://github.com/weiboad/fiery)。このバージョンは、プロジェクト全体が中小企業向けに設計されています。 Java8 ランタイムがある限り、そのまま使用できます。もちろん、システムは単に埋め込みジョブを実行する必要があります。 C++ 分散バージョンは多くのものに依存しており、運用および保守担当者に特定の能力が必要です。スタンドアロン バージョンは、状況に応じて後でリリースされます。これらのコア取引システムは完全にオープンソースであり、内部に機密データが含まれており、完全に利用可能です。現在市場には分散追跡の複数の方法があり、その中には社内で使用されているものもあれば、小規模な無料サービスや大規模な有料サービスもあります。一般的な分散トレースは、統計的手法を通じて各ブロックのパフォーマンスを記録します。私たちが現在提供している方法は、市場に出ているものとまったく同じではありません。私たちは、継続的な実験を通じて多くの簡素化を行い、本当に実用的であると思われる機能だけを残し、重要なシステムを分散監視するためのシステムを設計しました。決済システムやトランザクションシステムなど。
各リクエストの特定の状況、戻り値、特定のパフォーマンス、その他の情報を記録し、テーブル分析を通じて、オンライン依存のインターフェイスのパフォーマンス (サードパーティまたは埋め込まれていないインターフェイスのパフォーマンス統計) とインターフェイスの隠れたポイントを迅速に発見できます。パフォーマンスランキングのために独自に分析されています。分析テーブルを表示すると、再生をリクエストする最も遅いインターフェイスをすぐに見つけて、オンライン パフォーマンスが遅い原因を分析できます。実践を通じて、多くの場合、PHP が依存するデータ リソースの遅さが PHP インターフェイスのパフォーマンスの低下につながることがわかりました。したがって、リソースに依存することに焦点が当てられます。ユーザーは必要に応じて他の情報を追加できるため、大量の無駄なログを削減し、より節約できます。
このオープンソース Fiery は主に、PHP 侵入ポイント ライブラリ、合理化されたログ監視プッシュ モジュール、サーバーの 3 つの部分で構成されています。この 3 つで PV が 2000w 未満の Web サイトの分散トラッキングを実現します。
埋め込まれたポイント ライブラリは、入口で Traceid (UUID) を生成します。この Traceid は、入口サーバーの IP アドレスと、後続のすべてのログにこの UUID をマークします。ログ収集後、関連するすべてのログがこの UUID に従って保存されます。埋め込みポイント ライブラリは、他のリクエストによって送信された Traceid を受信し、実行時に RPCID を送信および維持する役割を果たします。RPCID は、呼び出し関係の順序と階層を直接復元し、開発者に表示できる階層型カウンターです。 。さらに、PHP の操作中に例外が発生した場合、サーバーが重複排除統計を実行するために、埋め込みポイント ライブラリによって例外がキャプチャおよび記録されます。最後に、これらのログはサーバーのローカル ディスクに記録されます。いくつかの理由により、複数の PHP プロセスが同時にファイルを書き込む場合、プロセス ID に基づいてログが記録されることがあります。プロジェクト名をファイル名として使用します。 FIERYのログ取得と送信は、現状では運用・保守担当者の負担を軽減するための簡易版を実現しています。実験的な PHP ログのキャプチャおよび送信サービスもありますが、これはまだ実験的な機能であり、ユーザーがデバッグや改善に参加できることが予想されます。
私たちは Fiery のサーバー側で多くの作業を行い、それぞれリクエストのインデックス作成と保存を行うための Lucene と Rocksdb を組み込みました。メモリ統計についてもいくつかの作業を行っていますが、現時点では、ローカル インターフェイス、依存インターフェイス、Mysql、および Curl の応答のみをカウントしています。また、呼び出し関係の再生とエラー ログ アラートの重複排除統計も提供しています。これらの機能により、ライン上の要所での性能障害やシステム異常を迅速に発見できます。現在はスタンドアロン バージョンのみですが、将来的には必要に応じて、よりシンプルな分散モードにさらに拡張することができます。
上記のサービスは現在、オンラインで提供されているだけではありません。たとえば、QA テストの環境は、Traceid を介してすべての呼び出しプロセスに接続されています。 、戻り条件、およびこのリクエストのパフォーマンス。これは、簡単に分析できるように視覚的に表示できます。これは、オンラインにする前の単体テストでも実行できます。少し前に、私が Fiery を宣伝するために Weibo に投稿したとき、誰かが、Fiery がハッカーの侵入プロセスと特定の詳細を表示するためのハニーポットとして使用される可能性があると言及しました。このシステムは、PHP エコシステムのギャップを埋めるように設計されています。以上がPHP での分散トレースの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
