Dubbo 分散アーキテクチャの高可用性関連の概念

        高可用性:分散システムまたはアーキテクチャにおいて、一連の設計を経て、システムがサービスを提供できない時間を短縮し、システムとアプリケーションの可用性を向上させることを指します。

1. Zookeeper がダウンしており、dubbo に直接接続されています

質問: 飼育員登録センターがダウンしましたが、消費者はプロバイダーが公開するサービスに引き続き電話できますか? 登録センターなしでサービスに電話できますか?

答え: はい

理由:

堅牢性

1. 監視センターのダウンタイムは使用には影響しませんが、一部のサンプリング データが失われるだけです。

2. データベースがダウンした後も、登録センターはキャッシュを通じてサービス リストのクエリを提供できますが、新しいサービスを登録することはできません。

3. 登録センターのピアツーピア クラスターのいずれかに障害が発生した場合、自動的に別のクラスターに切り替わります。

4. すべての登録センターがダウンした後でも、サービス プロバイダーとサービス利用者はローカル キャッシュを介して通信できます。

5. サービスプロバイダーはステートレスなので、どれかがダウンしても利用に影響はありません。

6. すべてのサービス プロバイダーがダウンすると、サービス コンシューマ アプリケーションは使用できなくなり、サービス プロバイダーが回復するまで無期限に再接続する必要があります。

        登録センターがない場合でも、Dubbo の直接接続メソッドを使用して、消費者がプロバイダーによって公開されているサービスを参照できるようにすることができます。プロバイダーが提供するメソッドをリモートで呼び出す必要がある場合は、 @Reference アノテーションを使用します。直結インジェクション。

//    @Reference  //dubbo会自动去注册中心找这个暴露出来的服务
    @Reference(url = "172.0.0.1:20880")  //本机提供者应用的具体url
    UserService userService;

2. 負荷分散戦略

        ロード バランス (LB) は、高同時実行性と高可用性システムに不可欠な重要なコンポーネントです。その目標は、特定のアルゴリズムを使用してネットワーク トラフィックを複数のサーバーに均等に分散し、システム全体の応答速度とパフォーマンスを向上させることです。 . 可用性。

        1.ランダム(ランダムロードバランス)

                サーバーはランダムに呼び出されますが、ランダムな確率は重みによって設定されます。コール量が大きいほど、分布はより均一になり、確率に応じた重みを使用した後の重みはより均一になるため、プロバイダーの重みを動的に調整するのに役立ちます。

        2. ポーリング (ラウンドロビン ロードバランス)

                各サーバーはループで呼び出され、重みに応じてラウンドロビン比率を設定することもできます (たとえば)。ただし、遅いプロバイダーがリクエストを蓄積するという問題があります。たとえば、2 番目のマシンは非常に遅いですが、ハングしません。リクエストが 2 番目のマシンに転送されると、そこでスタックします。時間が経つと、すべてのリクエストがサーバー上でスタックします。セカンドマシンです。

        3. 最もアクティブでないロードバランス

                接続/リクエスト数が最も少ない候補サーバー (現在処理しているリクエストが最も少ないサーバー) にリクエストを分散します。

        4. 一貫性のあるハッシュ (ConsistentHash LoadBalance)

                ハッシュ分散に従って、同じパラメータで同じメソッドを呼び出すと、毎回同じサーバーが呼び出されます。

3. サービスのダウングレード

        サーバーの負荷が劇的に高まると、一部のサービスやページが戦略的に処理されなかったり、実際のビジネス状況やトラフィックに基づいて単純な方法で処理されたりすることがあります。これにより、サーバー リソースが解放され、コア トランザクションの通常または効率的な動作が保証されます。サービス低下機能を使用すると、エラーが発生した非クリティカルなサービスを一時的にブロックし、低下後の復帰戦略を定義できます。

       簡単に言えば、全体の状況を維持するために一人を犠牲にすることです。

       たとえば、現在、サーバーは多くの機能 (注文生成、ユーザー管理、広告など) を実行しているため、限界に達しており、すぐに回転させることはできません。広告ビジネスを一時的に停止するか、単に処理してプロセッサーのリソースを解放することができます。他のコアのビジネスを最初に処理して、より効率的な運用を実現します。

        

         現時点では、dubbo のビジュアル インターフェイスで「シールド」または「フォールト トレランス」を選択して、サービスをダウングレードできます。

 

        (1) シールド: サービスに対するコンシューマーのメソッド呼び出しが直接 null 値を返し、リモート呼び出しが開始されないことを意味します。重要でないサービスが利用できない場合に、発信者を影響から守るために使用されます。

        (2) フォールトトレランス: コンシューマがサービスのメソッドの呼び出しに失敗した後、null 値を返し、例外をスローしないことを意味します。重要でないサービスが不安定な場合に、発信者への影響を許容するために使用されます。

おすすめ

転載: blog.csdn.net/weixin_64709241/article/details/129768445