著者 |王成明 1. 背景Dubbo 3.1 のリリースにより、Dubbo はクラウド ネイティブへの道において新たな重要な一歩を踏み出しました。このバージョンでは、プロキシレス メッシュの新機能が追加されました。 Dubbo Proxyless Mesh は xDS プロトコル解析を直接実装し、Dubbo とコントロール プレーン間の直接通信を可能にすることで、トラフィック制御、サービス ガバナンス、可観測性、セキュリティなどの統合制御を実現し、サイドカー モードによってもたらされるパフォーマンスの低下や展開アーキテクチャの複雑さを回避します。 02 2. サービスメッシュとはサービス メッシュは、「サービス メッシュ」とも翻訳され、サービス間の通信のためのインフラストラクチャ層として機能します。 Buoyant の CEO である Willian Morgan 氏は、記事「サービス メッシュとは何か? なぜ必要なのか?」で、サービス メッシュとは何か、クラウド ネイティブ アプリケーションにサービス メッシュが必要な理由を説明しています。 William Morgan 氏は Service Mesh を次のように説明しています。 サービス メッシュは、サービス間通信を処理するための専用のインフラストラクチャ レイヤーです。最新のクラウド ネイティブ アプリケーションを構成するサービスの複雑なトポロジを通じて、リクエストを確実に配信する役割を担います。実際には、サービス メッシュは通常、アプリケーションが意識することなく、アプリケーション コードと一緒にデプロイされる軽量ネットワーク プロキシの配列として実装されます。 中国語に翻訳: サービス メッシュは、サービス間の通信を処理するインフラストラクチャ層です。最新のクラウドネイティブ アプリケーションを構成する複雑なサービス トポロジ全体でリクエストを確実に配信する役割を担います。実際には、サービス メッシュは通常、アプリケーションがプロキシの存在を認識することなく、アプリケーション コードと一緒にデプロイされる軽量ネットワーク プロキシの配列として実装されます。サービス メッシュについて話すとき、古典的なサイドカー アーキテクチャ モデルについて言及する必要があります。ビジネス コンテナの通信トラフィックを引き継ぐために、ビジネス ポッドにサイドカー コンテナを挿入します。同時に、サイドカー コンテナはグリッド プラットフォームのコントロール プレーンに接続されます。コントロール プレーンが発行するポリシーに基づいてプロキシ トラフィックを統制および管理し、元のサービス フレームワークの統制機能をサイドカー コンテナーに下げることで、基本的なフレームワーク機能を沈め、ビジネス システムから切り離します。 従来の Sidecar Mesh 展開アーキテクチャには、スムーズなアップグレード、多言語、ビジネスへの介入の少なさなど、多くの利点がありますが、次のような追加の問題も生じます。
Sidecar Meshモデルの問題に対して、Dubboコミュニティは以前からDubboをコントロールプレーンに直接接続することを検討・検討しており、国内のオープンソースコミュニティで初めてProxyless Meshの概念を提案しました。もちろん、プロキシレスの概念は Google によって最初に提案されました。 03 3. Dubbo プロキシレスメッシュDubbo プロキシレス モードとは、Dubbo が Istiod と直接通信し、xDS プロトコルを通じてサービス検出やサービス ガバナンスなどの機能を実装することを意味します。 プロキシレス モードでは、マイクロサービスは 2.x 時代のデプロイメント アーキテクチャに戻ります。これは、Dubbo の従来のサービス ガバナンス モードと非常によく似ています。したがって、このモードは新しいものではありません。 Dubbo は最初からこのように設計されていました。そうすることで、アプリケーションのパフォーマンスが大幅に向上し、ネットワークの遅延が短縮されます。このアプローチは、元の SDK ベースのマイクロサービス モデルに応えるものだと考える人もいます。実際、Envoy の xDS API はまだ使用されていますが、アプリケーションに Sidecar プロキシを挿入する必要がなくなったため、アプリケーション パフォーマンスの低下を軽減できます。
しかし、メッシュ アーキテクチャと比較すると、Dubbo の従来のサービス ガバナンス モデルは、コントロール プレーンの統合制御を重視していません。これはまさにサービス メッシュが重視している点です。トラフィック、可観測性、証明書などの標準化された制御とガバナンスを重視しており、これはメッシュ コンセプトの高度な側面でもあります。 Dubbo プロキシレス アーキテクチャ モードでは、Dubbo プロセスはコントロール プレーンと直接通信し、Dubbo プロセスは直接通信モードを維持し続けます。プロキシレス アーキテクチャの利点は次のとおりです。
4. サービス検出xDS アクセスは登録センターモードで接続されます。ノード検出は、他の登録センターのサービス イントロスペクション モデルと同じです。 xDS の負荷分散およびルーティング構成は、ServiceInstance の動的ランタイム構成を通じて送信されます。構成パラメータは、Invoker の構築時に構成アドレスに渡されます。 5. 証明書管理ゼロトラスト アーキテクチャでは、ワークロードの識別と信頼を厳密に区別する必要があり、X.509 証明書を発行することが推奨される認証方法です。 Kubernetes クラスターでは、サービスは DNS 名を介して相互にアクセスし、ネットワーク トラフィックは DNS スプーフィング、BGP/ルーティング ハイジャック、ARP スプーフィングなどによってハイジャックされる可能性があります。サービス名 (DNS 名) をサービス ID に強力に関連付けるために、Istio は X.509 証明書に配置された安全な命名メカニズムを使用します。 SPIFFE は、Istio で採用されている安全な命名仕様です。これは、クラウド ネイティブによって定義された標準化された移植可能なワークロード ID 仕様でもあります。 Secure Production Identity Framework For Everyone (SPIFFE) は、サービス間の相互 ID 認証のための一連の標準であり、主に次のものが含まれます。
SPIFFE ID は、ワークロードの一意の識別子として、spiffe://<信頼ドメイン>/<ワークロード識別子> などの URI 形式を指定します。 Istio は独自のエコシステム内では、セキュリティ名として SPIFFE ID のみを使用します。データ形式は独自に実装されており、通信形式はCNCFがサポートするxDSプロトコル仕様(証明書認証通信は具体的にはxDSのSDS)を採用しています。 Istio は、特定の形式の SPIFFE ID をセキュア名として使用し、X.509 証明書の subjectAltName 拡張に挿入します。 「trust_domain」パラメータは、Istiod 環境変数 TRUST_DOMAIN を通じて挿入され、マルチクラスター環境での対話に使用されます。
Dubbo Proxyless Mesh 証明書を発行するプロセスは次のとおりです。
VI.ケース実践次に、既存のプロジェクトをプロキシレス メッシュ モードで簡単に実行する例を紹介します。 1. 環境整備
参考:
推奨: https://kubernetes.io/zh-cn/docs/tutorials/hello-minikube/
https://istio.io/latest/docs/setup/getting-started/
参照コマンドは次のとおりです。 https://istio.io/downloadIstio を実行します。 sh - 2. コードの準備ここでは、公式サンプルを直接再利用します。コード アドレス: https://github.com/apache/dubbo-samples/tree/master/dubbo-samples-xds これまでのところ、環境とコードはすべて準備完了です。 03 3. イメージを構築する(1)Dockerを起動する (2)minikubeを起動する minikube はローカル K8s であるため、起動するには仮想エンジンが必要であり、ここでは docker を使用して管理します。次のコマンドで起動します
dockerでminikubeを見ることができます (3)istioの状態を確認する (4)イメージを構築する コードの場所をローカルで見つけ、次のコマンドを順番に実行します。 # プロバイダーが配置されているパスを見つける # 消費者が位置するパスを見つける (5)現地の画像を確認する (6)名前空間を作成する # 名前空間を初期化する 名前空間を作成しないと、次のエラーが表示されます。 4. コンテナをデプロイする# プロバイダーが配置されているパスを見つける
minikubeダッシュボードで、デプロイしたポッドを確認します。 5. 消費者効果を観察するkubectl ログ xxx 結果:こんにちは、 xDS Consumer さん! ホスト: 172.17.0.5 7. まとめと展望この記事では、主にアーキテクチャ、サービス検出、証明書管理など、Dubbo Proxyless Mesh のコアプロセスを分析します。最後に、例を通して Dubbo Proxyless の使用方法を説明します。 Dubbo 3.1 のリリースにより、Dubbo はクラウド ネイティブへの道において新たな重要な一歩を踏み出しました。今年末には、Dubbo Mesh はサービス検出機能を備えたバージョンをリリースする予定です。これにより、すべての Dubbo ユーザーは、下位バージョンから Mesh アーキテクチャにスムーズに移行できるようになります。ガバナンス機能を備えたバージョンは来年の春先にリリースされる予定です。ホットプラグインアップデート機能を備えたバージョンは来年末までにリリースされる予定です。 Dubbo のクラウドネイティブの旅を目の当たりにすることに興味のある学生が、コミュニティへの貢献に積極的に参加してくれることを願っています。 著者についてAnt Financial エンジニアであり、Apache Dubbo コミッターでもある Wang Chengming 氏は、RPC、サービス メッシュ、クラウド ネイティブに重点を置いています。 |
<<: Kubernetes アプリケーション構成管理を 1 つの記事で理解する
2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますはじめに:...
旅行サイトは、顧客と直接やりとりするため、インターネット企業にとって大きなプレッシャーがかかるタイプ...
perfectip は、主にサーバーのレンタルとホスティングを提供する企業です。また、豊富なリソース...
2014年、Baiduは中国の検索エンジン市場のリーダーであり続けました。360が新たな競争相手とし...
ユーザーエクスペリエンスに関して、多くの友人は、高品質のユーザーエクスペリエンスをどのように構築する...
SEO 最適化の質によって、サイトが検索エンジンからどれだけのトラフィックを獲得できるかが決まります...
海外ドメイン名登録業者のNetimは2004年に設立され、2006年にEUドメイン名の運用を開始しま...
【侯小強は数ヶ月間休職している。彼は何度も「健康上の理由で辞めた」と強調し、陳天橋に不満はないと述べ...
現状では、ウェブサイト最適化の目的の一つは、企業製品の販売促進や企業ブランドの宣伝を目的としたいわゆ...
翔翔クラウドの春のプロモーションが始まりました:(1)成都西新データセンターは、成都テレコムのバック...
分散ロックとは何ですか?分散ロックは、分散システム間の共有リソースへの同期アクセスを制御する方法です...
reprisehosting は、今年のブラックフライデーにシアトルのデータセンターに専用サーバー ...
多くの企業は、マルチクラウドとも呼ばれる複数のパブリック クラウド プロバイダーのクラウド コンピュ...
これは多くの人が遭遇する問題です。SEO を活用して成果を上げる方法も、インターネット上のトラフィッ...
2013年に入ってから、百度の毎週木曜日の小さなアップデートは、一部のウェブマスターの気分に影響を与...