パブリッシャー-サブスクライバーとリアクターのパターンの違いは何ですか?


11

私と非常によく似たパブリッシュ/サブスクライブおよびReactorパターン。彼らはどう違いますか?

どちらのパターンでも、メッセージは間接的にサブスクライバーに渡されます(リアクターパターンのリスナー)。

オブザーバーパターンは、他の2つのパターンとも非常に似ていると思います。

これらのパターンの主な違いは何ですか?

回答:


12

リンクからわかるように、PubSubパターンはOOPパターンではなく、ネットワークアーキテクチャパターンであるメッセージングパターンです。

Reactorパターンは、シングルスレッドイベントループを使用したサーバーのリクエスト処理に関連するものです。繰り返しになりますが、リンクはNode.js、Netty、Twistedなどの良い例を示しています。

最後に、Observerは、オブジェクト指向コードのオブジェクト間の相互作用の方法を記述するOOPデザインパターンです。

したがって、これら3つのパターンは異なるドメインからのものです。


6

Reactor =リクエストを受信して​​処理するシングルスレッドイベントループ。これらのリクエストは、SMTPおよび/またはHTTP経由でファイルからバッチでロードできます。処理済みの同時応答は、順次ではなく準備ができたときに配信されます。

出版社が放出します。サブスクライバーが消費します。

パブリッシャー+サブスクライバー=オブザーバーパターン(Heads First Design Patterns)。オブザーバーは順番に発動し、通常は完了するまでブロックします。


2

PubSubは、メッセージングキュー(MQ)により関連しています。ノードが分散システムで非同期メッセージを受信する方法に関係しています。

Reactorパターンは、非同期イベントに関連しています。たとえば、非ブロッキングソケットは、リアクタパターンを使用してネットワークイベントを配信します:READ、WRITE、CONNECT、ACCEPT

CoralReactorをチェックして、リアクターパターンをよりよく理解することができます。

免責事項:私はCoralReactorの開発者の一人です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.