コミュニケーションが鍵です。 特に、何千もの疎結合エンティティが関与する高トランザクション分散アプリケーションがある場合。 その場合、古い情報なしでアプリケーションをスムーズに実行し続けるために、異なるモジュール間のスケーラブルで柔軟な通信が切実に必要とされています。
新たに出現したアプリケーションはマイクロサービスベースのアーキテクチャに移行しているため、関連するアプリケーションのバッキング通信アーキテクチャを設計する際に考慮する必要のある基本的な質問をいくつか示します。
- スケーラブルですか?
- 信頼できますか?
- ストレージ効率は良いですか?
NCache は、マイクロサービスベースの.NET/のパフォーマンスを強化するために広く採用されているメモリ内分散キャッシュです。 .NET Core 分野の様々なアプリケーションで使用されています。 NCache パブリッシャーサブスクライバー(Pub / Sub)機能を提供して、これらのアプリケーションのイベント駆動型メッセージングパラダイムを有効にします。
NCache 詳細 NCache Pub / Sub NCache ドキュメント
紹介 NCache Pub / Sub
NCache インメモリのPub/Subメッセージングを提供して、.NETWebアプリケーションでのリアルタイムの情報共有を可能にします。 Pub / Subモデルは、関心のあるユーザーがメッセージをパブリッシュおよびサブスクライブするチャネルを提供することにより、パブリッシャーとサブスクライバーを自然に切り離します。 今いつ NCache メッセージングバスとして機能し、Pub/Subモデルは基盤となるメリットを享受します NCache 分散アーキテクチャ と多数の便利 機能を使用。 どのように組み合わせるかがわかります NCache そして、Pub / Subは上記の課題に対処し、最終的にはアプリケーションの通信を改善するのに役立ちます。
あなたが見ることができます のコアコンポーネント NCache Pub / Sub この機能の基本を理解する。 さらに面倒なことはせずに、まず、Pub/Subメッセージングを利用するために物事を成し遂げる方法を見てみましょう。
使い方 NCache Pub / Subメッセージング
ストアに追加されたすべての新製品について通知を受ける必要があるeコマースアプリケーションがあるとします。 それを使用して達成できるので NCache Pub / Sub、最初に行う必要があります キャッシュを作成する。 Pub/Sub専用のキャッシュを用意することをお勧めします。 次に、新製品に関連する通知を取得し、メッセージを公開し、メッセージをサブスクライブするためのトピックを作成するステップバイステップのプロセスについて説明します。
NCache 詳細 NCache Pub / Sub NCache ドキュメント
トピックを作成する
NCache 〜を提供する ITopic
一意の名前でトピックを作成するためのインターフェース。 パブリッシャーアプリケーションが名前のトピックを作成する方法は次のとおりです 新製品 メソッドを使用して CreateTopic
.
1 2 3 4 5 6 |
// Pre-condition: Cache is already connected // Specify the topic name string topicName = “newProducts” // Create topic ITopic topic = cache.MessagingService.CreateTopic(topicName); |
トピックがすでに存在する場合、トピックのインスタンスは次のように返されます。 ITopic
.
特定のイベントがより重要であり、発生したらすぐに通知する必要がある場合があります。 たとえば、販売中の完成品/製品について通知を受け取ることは、売り手/買い手であることが最も重要な場合があります。 その場合、設定することができます トピックの優先度 トピックの作成中に高になり、待機せずに関連する通知を受信します。
メッセージを公開する
トピックが作成されると、パブリッシャーアプリケーションは、を使用してそのトピックに関連するメッセージを公開できます。 Publish
方法。 そのためには、最初にトピックの名前を指定してトピックのインスタンスを取得します。 次のコードは、新製品に関連するメッセージを既存のトピックに公開する方法を示しています。 新製品。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create the object to be sent in message Product product = FetchProductFromDB(10248); // Create the new message with the object order var productMessage = new Message(product); // Publish the order with delivery option set as all orderTopic.Publish(productMessage, DeliveryOption.All, true); |
パブリッシャーであるため、アプリケーションのシナリオに基づいて、特定のメッセージをブロードキャストしたり、任意のメッセージに配信したりする必要がある場合があります。 たとえば、製品の価格が更新された場合は、すべてのサブスクライバーに通知する必要があります。 ただし、これが常に当てはまるとは限りません。 それを考慮して、メッセージの公開中に配信モードを指定できます。 次のXNUMXつのメッセージ配信オプションはによって提供されます NCache Pub / Sub。
- すべて (デフォルト): 登録されているすべてのサブスクライバーにメッセージを配信します。
- 任意: 登録されているサブスクライバーのいずれかにメッセージを配信します。
見る 配送オプション のガイドをご参照ください。
さらに、Pub / Subキャッシュのストレージスペースを効率的に管理するために、次の設定も可能です。 メッセージの有効期限.
トピックを購読する
トピックに対してメッセージが公開された後、サブスクライバーアプリケーションはそのトピックに対してサブスクリプションを作成し、 CreateSubscription
方法。 以下のコードは、サブスクライバーアプリケーションがトピックのサブスクリプションを作成する方法を示しています 新製品 MessageReceived
折り返し電話。
1 2 3 4 5 6 7 8 9 10 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create and register subscribers for topic newProducts // MessageReceived callback is specified ITopicSubscription orderSubscriber = orderTopic.CreateSubscription(MessageReceived); |
サブスクライバーアプリケーションは、販売通知を受信したときに製品価格を更新する必要があると想定します。 次に、目的の価格更新操作をで実行できます。 MessageReceived
折り返し電話。
上記の例で作成されたサブスクリプションは非永続的であり、サブスクリプションはデフォルトで非永続的です。 その上、あなたはまたすることができます 永続的なサブスクリプションを作成する NCache IDurableTopicSubscription
インターフェース。 永続的なサブスクリプションの場合、 NCache 接続が失われた場合でも、サブスクライバーのサブスクリプションを保持します。 これは、サブスクライバーがオフラインの場合でも、トピックで公開されたメッセージがサブスクリプションに割り当てられることを意味します。 したがって、加入者は再接続時にこれらのメッセージを受信できます。
さらに、提供されたパターンに該当する単一/複数のトピックをサブスクライブできます。 パターンベースのサブスクリプション方法 コラボレー NCache 複数のワイルドカードをサポートします。
通知を登録する
パブリッシャーであるため、メッセージのステータスとトピックの可用性を知る必要がある場合があります。 パブリッシャーアプリケーションが使用中に登録できる通知の種類を見てみましょう NCache Pub/Subメッセージング。
MessageDeliveryFailure:
問題が原因でメッセージの配信に失敗した場合に通知を受け取るため。OnTopicDeleted:
トピックが削除されたときに通知を受け取るため。
これは、発行者がこれらXNUMX種類の通知に簡単に登録できる方法です。
1 2 3 4 5 6 7 |
// You have an instance productTopic of existing topic // Register message delivery failure productTopic.MessageDeliveryFailure += OnFailureMessageReceived; //Register topic deletion notification productTopic.OnTopicDeleted = TopicDeleted; |
なぜ NCache 分散メッセージングのPub/Sub?
この時点で、私たちは NCache Pub/Sub機能。 さて、どのようなメリットがありますか Ncache Pub / Subは、最初に提起された質問を処理することを提案しますか?
- NCache は、大阪で 線形スケーラビリティ これにより、アプリケーションは増え続けるサブスクリプション要求をシームレスに処理できます。
- NCache 保証する の高可用性 NCache 動的な環境でのサブスクライバーの接続に対応します。
- NCache キャッシュにあるアイテムの有効期限と削除を許可して、ストレージスペースをインテリジェントに管理します。
したがって、上記の機能と、Pub/Subのルーズカップリングおよび非同期メッセージングモードを組み合わせて作成します。 NCache Pub / Sub機能は、将来の.Netアプリケーションでの分散メッセージングに非常に有望です。