English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ゲスト
1 / ?

トラフィックが到着する前に特定されるボトルネックノード

介在中心性

グラフ内のすべてのノードのペアについて、それらを結ぶ最短経路が存在します。ノードNの介在中心性とは、すべての最短経路のうち、Nを通過する経路の割合です。

高い介在中心性を持つノードは、多くの他のノードのペア間の経路上にあります。 それが遅くなると、多くのフローが遅くなります。それが障害を起こすと、多くのフローが切断されます。

アーキテクチャ的な読み解き:高い介在中心性を持つノードは、すべてのアーキテクチャレビューで特に注意を払うべきものです。それらは、ボトルネック、SPOF(単一障害点)、および容量クリティカルなコンポーネントが一つにまとまったものです。それらは通常、以下のようなものです:

- DNSプロバイダ(すべてのクライアントとすべてのサービスの間に位置する)

- イングレスプロキシ(すべてのクライアントとすべてのバックエンドの間に位置する)

- データベースプライマリ(すべてのバックエンドとすべての読み取りの間に位置する)

- 認証サービス(すべてのユーザーとすべての認可されたアクションの間に位置する)

測定なしでの検出: グラフのトポロジーのみで、高ベタネスノードを特定できます。トラフィックデータは不要であり、アーキテクチャ図が必要です。他の多くのノードのペアの間に位置するノードは、構造的に重要である。

運用上の影響: 高ベタネスノードには、(1) 容量の余裕、(2) 冗長性、(3) 観測可能性、および (4) インシデント対応プレイブックへの不均衡な投資が求められる。

Betweenness centrality: highlighted node sits on most shortest paths

あるシステムには以下が含まれている:100の外部クライアント -> 1つのDNS -> 1つのCDNベンダー -> 3つのリバースプロキシ -> 12のバックエンドレプリカ -> {1つのDBプライマリ、2つのキャッシュノード、5つの外部APIエンドポイント}。これらのノードクラスをベタネス中心性(高い順)でランク付けし、上位2つのランクがなぜ特別な注意を要するのか説明してください。

最小のカットは最小のスライスを切断する

平易な言葉で説明する最小カットの定理

グラフにおける2つのノード間の最小カット(min-cut)とは、それらを切断するために削除しなければならないエッジ(またはノード)の最小数です。

運用上の読み方: 最小カットは、最悪ケースのブラスト半径(影響範囲)を上限で制約します。'clients'(クライアント)と'database'(データベース)間の最小カットが1エッジ(単一のプロキシ)の場合、そのエッジを失うことでクライアントとデータベースの接続が完全に遮断されます。一方、最小カットが5の場合、完全に切断するには5つのコンポーネントを同時に失う必要があり、これは不運なケースですが、影響範囲は限界があります。

ブラスト半径を考慮した設計: すべての重要な境界において最小カットを増やす必要があります。複数のプロキシ、複数のキャッシュノード、データセンター間の複数のネットワークパスなどです。これらを追加するたびに、最小カットは1増加します。

グラフの用語で表したバルクヘッドパターン: リソースを、互いに最小カットを共有しない独立したサブグラフに分割します。エッジが存在しないため、あるサブグラフ内の障害は他のサブグラフに伝播しません。

直径は障害伝播の距離を設定する

グラフの直径とは、任意の2つのノード間の最短路の長さの最大値です。

障害の伝播: ノードが障害を起こし、リトライが逆流すると、直径の距離だけ上流のノードに影響が及びます。直径が3のシステム(クライアント -> プロキシ -> バックエンド -> DB)では、DBの障害によりリトライストームが発生し、3層上流のレイヤーが影響を受けます。

示唆: 直径が短いほど障害の封じ込めは速くなりますが、ノードの集中度も高まります。各設計にはトレードオフがあります。

最小カットは爆発半径の上限、直径は伝播距離

実際のアーキテクチャにおける最小カットの計算

アーキテクチャ構成: DNS 1台、CDN 1台、リバースプロキシ 3台、バックエンドレプリカ 12台、DBプライマリ 1台。

以下の3つの境界における最小カットを計算(または推定)してください: (1) 外部クライアントとリバースプロキシ層の間; (2) リバースプロキシ層とバックエンド層の間; (3) バックエンド層とDBプライマリの間。それぞれについて、その最小カットが超過された際に何が障害されるかを特定してください。

グラフ指標による障害モード監査

統合

これにより、高ビネスノードを特定し、すべての境界で最小カットを計算し、直径を介して障害伝播距離を推定できるようになりました。

これら3つをすべて適用してください。

システム構成:50の顧客エンドポイント -> 1つのDNS -> 2つのCDN POP -> 4つのリバースプロキシ -> 16のバックエンドレプリカ -> { DBクラスタ(プライマリ1 + スタンバイ2)、Redisクラスタ(5ノード)、外部API 3つ }。

システムを監査してください:(1) 最もビネスが高いノードを特定し、(2) 最も懸念される境界での最小カットを計算し、(3) 2つの具体的なアーキテクチャ変更を提案してください(それぞれが最小カットを高めるものであり、強化される境界名を明記すること)。

補足ノート

補足ノート

この幾何学的なレッスンは、障害モードと影響範囲のメインレッスンをグラフ指標(介在性、最小カット、直径)を通じて再構成しています。

最後の補足ノート geometry_of_observability_and_capacity では、CDN PoPのカッチメントに対するボロノイセル、レイテンシの三角形における光速の下限、およびプロキシ層で再検討されるキューイング曲線について扱います。

よくできました。