У чому різниця між видавцем-абонентом та реактором?


11

Шаблони публікації-підписки та Reactor дуже схожі на мене. Чим вони відрізняються?

В обох шаблонах повідомлення передається абонентам опосередковано (слухачі за схемою реактора).

Я думаю, що модель спостерігачів дуже схожа на дві інші моделі.

Які ключові відмінності між цими моделями?

Відповіді:


12

Як я бачу за посиланням, шаблон PubSub - це не шаблон OOP, а скоріше шаблон обміну повідомленнями , який є мережевим архітектурним малюнком.

Шаблон реактора - це щось, що стосується обробки запитів серверів з однопоточним циклом подій . Знову ж таки, посилання показує кілька хороших прикладів, таких як Node.js, Netty, Twisted тощо.

Нарешті, Observer - це модель дизайну OOP, яка описує спосіб взаємодії між об'єктами в OO-коді.

Тож ці три зразки є з різних областей.


6

Reactor = одинарний цикл подій, який приймає та обробляє запити. Ці запити можуть бути завантажені партіями з файлу, через SMTP та / або HTTP. Опрацьовані одночасно відповіді надходять тоді, коли готові, а не послідовно.

Видавці випромінюють. Підписники споживають.

Видавці + передплатники = шаблон спостерігача (керівники перших шаблонів дизайну). Спостерігачі стріляють послідовно і зазвичай блокують до їх завершення.


2

PubSub більше пов'язаний з чергами на обмін повідомленнями (MQ). Це пов'язано з тим, як вузли отримують асинхронні повідомлення в розподіленій системі.

Шаблон реактора більше пов'язаний з асинхронними подіями. Для прикладів, що не блокують розетки, використовуйте схему реактора для доставки мережевих подій: ЧИТАТИ, ЗАПИСИТИ, ЗВ'ЯЗАТИ, ПРИЙМАТИ

Ви можете перевірити CoralReactor, щоб краще зрозуміти схему реактора.

Відмова : Я один із розробників CoralReactor.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.