ホームページ  >  記事  >  Java  >  Spring Cloud マイクロサービスでの非同期メッセージ通信

Spring Cloud マイクロサービスでの非同期メッセージ通信

WBOY
WBOYオリジナル
2023-06-23 09:27:07683ブラウズ

クラウド コンピューティングとビッグ データの台頭により、マイクロサービス アーキテクチャはエンタープライズ システムで広く使用されています。 Spring Cloudはマイクロサービスアーキテクチャの重要な実装ツールとして、マイクロサービスアーキテクチャ下での通信を実現するためのさまざまなソリューションを提供します。この記事では、Spring Cloud マイクロサービスでの非同期メッセージ通信ソリューションに焦点を当て、マイクロサービス アーキテクチャでのメッセージ通信の問題を解決するためのアイデアと参考情報をすべての人に提供したいと考えています。

1. マイクロサービスの非同期メッセージ通信の背景

マイクロサービス アーキテクチャでは、サービスは独立した開発、独立したデプロイメント、独立した保守のために複数のマイクロサービスに分割され、相互作用と通信が必要になります。従来の RPC 呼び出しや HTTP リクエストは、同時実行性が高くビッグデータのシナリオでは応答時間が長いため、システムのパフォーマンスを低下させます。そのため、非同期メッセージ通信は、異なるマイクロサービス間の通信を効果的にサポートする優れたソリューションとしてマイクロサービスで広く使用されています。

2. Spring Cloud での非同期メッセージ通信ソリューション

Spring Cloud には、Spring Cloud Stream と Spring Cloud Bus という 2 つの一般的に使用される非同期メッセージ通信ソリューションがあります。

  1. Spring Cloud Stream

Spring Cloud Stream は、メッセージ駆動型のマイクロサービスを構築するために Spring Cloud によって提供されるフレームワークです。 Spring Boot と Spring Integration に基づいて構築されており、さまざまなメッセージ ブローカー サービスに簡単に接続できます。 Spring Cloud Streamは、パブリッシュ/サブスクライブモデル(Publish/Subscribe)に基づいた非同期メッセージ通信を実装しています。

Spring Cloud Stream のワークフローは次のとおりです:

① プロデューサーはメッセージを生成し、Spring Cloud Stream に発行します;
② Spring Cloud Stream はメッセージを中間エージェントに送信します (メッセージBroker);
③ コンシューマは中間エージェントからの情報をサブスクライブし、メッセージを受信すると Spring Cloud Stream に通知し、Spring Cloud Stream がメッセージを対応するコンシューマに配信します。

Spring Cloud Stream は、Apache Kafka や RabbitMQ などのメッセージ ブローカー サービスを使用します。これは、高信頼性、高同時実行性、および高スケーラビリティの特徴を備えています。使用プロセスは非常に簡単で、対応する依存関係を導入し、使用するメッセージ エージェントを設定するだけです。メッセージ サービスを実装するサンプル コードは次のとおりです:

// 引入Spring Cloud Stream依赖
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-stream-kafka</artifactId>
</dependency>
 
// 在应用程序属性文件中设置连接的kafka代理
spring.cloud.stream.kafka.binder.brokers=kafka.example.com:9092
spring.cloud.stream.kafka.binder.zkNodes=zookeeper.example.com
spring.cloud.stream.kafka.binder.defaultBrokerPort=9092
spring.cloud.stream.kafka.binder.defaultZkPort=2181
  1. Spring Cloud Bus

Spring Cloud Bus は、分散システムで状態の変更を伝播するメカニズムです。システムを構成するさまざまなマイクロサービス間でメッセージをやり取りできます。 Spring Cloud Bus は、メッセージ ブローカーを使用してさまざまなマイクロサービスを接続し、軽量のメッセージ タイプを使用してイベント ステータスの送信を完了します。 Spring Cloud Stream とは異なり、Spring Cloud Bus はシステム内のメッセージングと状態共有によく使用されます。

Spring Cloud Bus のワークフローは次のとおりです:

① HTTP/HTTPS リクエスト (例: POST メソッド、PATCH メソッド、または DELETE メソッド) を通じて Spring Cloud Bus の状態に影響を与える可能性のあるイベントをトリガーします。 ;
② Spring Cloud Bus はイベント リクエストを受信し、イベントの内容を保存します;
③ Spring Cloud Bus のイベント ステータスをメッセージ エージェントを通じて分散システム全体にブロードキャストします;
④ 各マイクロサービスはリッスンしますメッセージはエージェント内のイベント ステータスを監視し、イベント ステータスが変化するとリアルタイムで同期的に自身のステータスを変更します。

Spring Cloud Bus は、メッセージ プロキシ サーバーとして RabbitMQ または Kafka を使用しており、高いスケーラビリティと高い信頼性を備えています。 Spring Cloud Bus の使用は非常に簡単で、アプリケーションのプロパティ ファイルに対応する構成を追加するだけで済みます。メッセージ サービスを実装するサンプル コードは次のとおりです:

// 添加依赖
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
 
// 在应用程序属性文件中设置RabbitMQ地址
spring.rabbitmq.host=localhost
spring.rabbitmq.virtual-host=/
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

3. 概要

Spring Cloud は、現在のマイクロサービス アーキテクチャで最も人気のある実装ソリューションの 1 つです。メッセージ通信には多くの利点があります。この記事では、Spring Cloud で一般的に使用される非同期メッセージ通信ソリューションである Spring Cloud Stream と Spring Cloud Bus を紹介し、簡単なコード例を通じてアプリケーションでそれらを使用する方法を紹介します。この記事が、皆さんが実際にマイクロサービス アーキテクチャをより適切に適用し、システムのパフォーマンスと安定性を向上させるのに役立つことを願っています。

以上がSpring Cloud マイクロサービスでの非同期メッセージ通信の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。