Как второй физический издатель получает уведомления о новых подписчиках? - PullRequest
1 голос
/ 20 мая 2011

Относительно к этому вопросу : насколько я понимаю, два физических издателя представляют одного логического издателя, каждый из которых должен иметь свою собственную очередь подписки.Использование DBSubscriptionStorage позволяет им иметь общий список подписчиков, но что происходит, когда появляется новый подписчик и подписывается?Сообщение о подписке будет отправлено в одну из очередей подписки, а затем в базу данных.Есть ли какой-нибудь способ, кроме перезапуска других издателей, что они могут быть уведомлены о новом подписчике?

Ответы [ 2 ]

1 голос
/ 23 мая 2011

2 физических издателя со многими подписчиками

Конфигурация

  • Каждая конечная точка (издатель или подписчик) имеет свою собственную очередь ввода.
  • Каждый издатель будет настроен на указание на одну и ту же базу общих подписок
  • Каждый подписчик будет настроен на указание одной входной очереди Publisher (именно здесь они будут отбрасывать свои сообщения подписки)

Обработка

  1. Subscriber1 помещает подписное сообщение (M1) во входную очередь Publisher1
  2. Publisher1 сохраняет эту подписку в базе данных
  3. Subscriber2 помещает подписное сообщение (M2) во входную очередь Publisher2
  4. Publisher2 сохраняет эту подписку в базе данных
  5. Publisher1 издателей M1, который помещается во входную очередь Subscriber1
  6. То же самое происходит для Publisher2 и M1

Вам необходимо решить, заинтересованы ли все подписчики в одних и тех же сообщениях. Разрешается, чтобы оба издателя публиковали одни и те же сообщения, поскольку каждый подписчик будет подписан только один раз (либо на P1, либо на P2). Вы имеете полный контроль над тем, как «распределить нагрузку» на работу. Дополнительную информацию можно найти здесь , если вы еще не посмотрели

1 голос
/ 21 мая 2011

У вас есть несколько вариантов. Одним из самых простых является указание каждому из отдельных физических издателей указывать на одну физическую базу подписчиков / подписчиков.

Другой действительно хороший способ справиться с этим - репликация базы данных. Единственная проблема с репликацией заключается в том, что она по своей сути "односторонняя". Несмотря на это, существует действительно интересный проект для MySQL под названием " MySQL MMM ", который, кажется, идеально подходит для этого сценария.

Наконец, вы могли бы иметь собственное хранилище подписки, используя что-то вроде Membase, которое является постоянным, реплицируемым хранилищем ключей / значений.

Итог: у вас может быть одна база данных подписки, которая является самой простой, но у вас есть точка сбоя. Или вы можете иметь реплицированное хранилище подписки. Реплицированное хранилище гарантирует, что все узлы имеют список всех подписчиков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...