Apache DubboによるHTTP/3版RPCプロトコル、不安定なネットワークの効率性を最大6倍改善

> 本記事は[こちらのブログ](https://www.alibabacloud.com/blog/http3-version-rpc-protocol-by-apache-dubbo-improving-unstable-network-efficiency-by-up-to-6-times_601878?spm=a2c65.11461433.0.0.4ee35355Xcc2A1)を参考にしています。
> 翻訳にはアリババクラウドの[ModelStudio](https://www.alibabacloud.com/en/product/modelstudio)([Qwen](https://www.alibabacloud.com/en/solutions/generative-ai/qwen))を使用しております。

トリプルXプロトコルの導入
トリプルXプロトコルの登場は、これらの課題に直接対応します。それはダブボの一貫して高い通信性能を引き継ぎながら、gRPCプロトコルとの完全な互換性を達成します。HTTP/1、HTTP/2、およびHTTP/3などのプロトコルをサポートすることで、幅広いクロスクラウドやクロスリージョンアプリケーションシーンに対してより柔軟で効率的な解決策を提供します。

1.1 HTTP/3:現代ネットワーク通信の新たな推進力
HTTP/3は、高速性、セキュリティ、現代ネットワークの信頼性を向上させるために設計されたハイパーテキスト転送プロトコルの新しいバージョンです。GoogleのQUICプロトコルに基づいて構築され、TCPではなくUDPを用いたデータ伝送により、HTTP/2での一部のパフォーマンスのボトルネックを根本的に解決しています。HTTP/3に基づくRPCプロトコルの構築には、重要な技術的利点があります。
- 最初に、HTTP/3の低遅延と高速な接続確立メカニズムにより、RPC呼び出しの応答時間を大幅に短縮できます。特にモバイルネットワークやクロスリージョン呼び出しでは性能が著しく向上します。
- 次に、HTTP/3の多重化機能により、複数のRPCリクエストが単一の接続を共有し、単一リクエストのブロッキングに影響を受けずに並列性と伝送効率が向上します。
- さらに、組み込みのTLS 1.3暗号化メカニズムによりデータ伝送のセキュリティが確保され、アプリケーション層でのセキュリティ設定が簡素化されます。
- 更に、HTTP/3はネットワークパケットロスに敏感であり、複雑なネットワーク環境でもRPC呼び出しが安定したパフォーマンスを維持できるようになります。これらの特長により、高パフォーマンスと高信頼性を要求するシーンで、HTTP/3に基づくRPCプロトコルには内禀的な優位性があります。

トリプルXによるHTTP/3の公式サポート
トリプルプロトコルはHTTP/3プロトコルのサポートを実装しており、RPCとRESTリクエストの両方をHTTP/3経由で伝送できるようになりました。HTTP/3の採用により、トリプルプロトコルは以下の面で著しい改善を見ています。
- パフォーマンス向上: QUICプロトコルの利用により、HTTP/3は遅延を削減し、リクエスト応答時間を早め、特に高遅延または複雑なネットワーク環境で全体的なサービスパフォーマンスを大幅に向上させます。
- 信頼性強化: HTTP/3は多重化と接続移行により先頭ブロックを回避し、悪条件のネットワーク状況でも接続の安定性を維持し、信頼性の高いサービス提供を確保します。
- セキュリティ向上: HTTP/3はTLS1.3暗号化を必須としており、従来のHTTP/2のオプション的な暗号化に比べてより安全なコミュニケーションが可能です。
-不安定ネットワークへの適応: 高いパケットロス率や不安定な帯域幅の場合でも、HTTP/3はより高い接続品質とサービスパフォーマンスを維持し、不安定なネットワーク環境でのパフォーマンスを向上させます。

HTTP/3はQUICプロトコル(UDP)に基づいているため、ファイアウォールやゲートウェイによってブロックされる可能性があるため、トリプルではデフォルトでHTTP/3ネゴシエーションの機能を実装して有効化しています。接続はまずHTTP/2経由で確立され、接続が成功しサーバがHTTP/3サポートを示す<a href=https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Alt-Svc target=_blank>Alt-Svc</a>ヘッダーを返した場合、クライアントは自動的にHTTP/3に切り替えます。

実践事例: アプリケーションのHttp/3通信有効化
この節では、一般的なダブボアプリケーションでHTTP/3通信のサポートを有効にする方法を説明します。まず、トリプルRPCプロトコルを使用していることを確認してください。HTTP/3機能を有効にするために、以下の設定を追加するだけです。詳細なサンプルは、オープンソースリポジトリのdubbo-samplesの2-advanced/dubbo-samples-triple-http3ディレクトリにあります。

3.1 HTTP/3トランスポートサポートの構成yaml
dubbo:
    protocol:
        name: tri
        triple:
            http3:
                enabled: true
3.2 HTTP/3プロトコル解析依存パッケージの追加xml
<dependencies>
    <dependency>
        <groupId>io.netty.incubator</groupId>
        <artifactId>netty-incubator-codec-http3</artifactId>
        <version>0.0.28.Final</version>
    </dependency>

    <!--自己署名証明書をサポートするために必要な場合、証明書の設定が不要な場合-->
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcpkix-jdk15on</artifactId>
        <version>1.70</version>
    </dependency>
</dependencies>
3.3 サンプルコードの実行と効果テスト
前述のサンプルソースコードリポジトリから完全なサンプルソースコードをダウンロードした場合、上記の二つの設定を修正後、サンプルを直接有効化することができます。この状況では、サンプル通信はHTTP/3に基づいています。サンプルが正常に有効化されたら、curl（HTTP/3をサポートする新しいバージョンにアップデートが必要）を使用してテストできます。詳しくは、<a href=https://curl.se/docs/http3.html target=_blank>参照</a>してください。bash
curl --http3 -vk https://localhost:50052/org.apache.dubbo.demo.GreeterService/sayHelloAsync?request=world
# 出力は以下の通り
# * QUIC暗号選択: TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_CCM_SHA256
# * 証明書検証をスキップ
# * HTTP/3を使用中
# * [HTTP/3] [0] OPENED ストリーム: https://localhost:50052/org.apache.dubbo.demo.GreeterService/sayHelloAsync?request=world
# * [HTTP/3] [0] [:method: GET]
# * [HTTP/3] [0] [:scheme: https]
# * [HTTP/3] [0] [:authority: localhost:50052]
# * [HTTP/3] [0] [:path: /org.apache.dubbo.demo.GreeterService/sayHelloAsync?request=world]
# >
# * リクエストが完全に送信されました
# < HTTP/3 200
# < content-type: application/json
# <
# Hello world

4. パフォーマンス比較: 不安定ネットワークでの通信効率最大6倍向上
Apache Dubboは、新規トリプルプロトコルでHTTP/3のサポートを導入し、クロスクラウド、クロスリージョン、不安定ネットワーク環境での通信パフォーマンスを大幅に向上させました。例えば、QUICプロトコルを通じて遅延を低減することで、ダブボは不安定ネットワーク条件での効率を最大6倍まで向上させました。トリプルプロトコルはHTTP/1、HTTP/2、HTTP/3と互換性があり、開発者が異なるシーン要件に対応するために柔軟に対応しながらシステムアーキテクチャを簡素化できます。これらの革新を通じて、Dubboは高性能分散サービス分野でのリーダーシップをさらに強化しました。

![1](https://yqintl.alicdn.com/13410cd9
![3](https://yqintl.alicdn.com/bd3970f55f1b5f572e6adde897ce55a24f8da100.png)

6. 概要
HTTP/3の導入と応用は、ネットワーク通信において顯著な技術的進歩をもたらしています。現代のネットワークの核心プロトコルの一つとして、HTTP/3はQUICに基づいた設計を通じて、高遅延や弱いネットワークなどの複雑な環境における従来のプロトコルのパフォーマンスのボトルネックを解決しています。特にRPCプロトコルの構築において、HTTP/3の低遅延性、多重化、パケットロスに対する敏感性、強制暗号化といった特徴により、通信の効率性、セキュリティ、信頼性が大幅に向上しています。Apache DubboのTripleプロトコルを例に取り、HTTP/3ベースのアーキテクチャは、クロスクラウドやクロスリージョンのアプリケーションシーンを拡張するとともに、不安定なネットワーク環境では最大6倍のパフォーマンス向上を達成しています。柔軟性のあるプロトコルを持つDubboは、分散サービスに対してより効率的で安全なソリューションを提供し、現代的なマイクロサービスアーキテクチャのさらなる発展に道を開いています。