WedX - журнал о программировании и компьютерных науках

Правильные типы сокетов для механизма перехвата сообщений?

У меня есть одно приложение-издатель (PUB), у которого есть N подписчиков (SUB)

Эти подписчики должны быть в состоянии наверстать упущенное, если они перезагрузятся или упадут и пропустят сообщения.

Мы реализовали простое хранилище событий, в которое пишет издатель. Мы реализовали CatchupService, который может запрашивать хранилище событий и отправлять пропущенные сообщения подписчику.

Мы реализовали в подписчике PUSH-сокет, который отправляет запрос о пропущенных сообщениях. Абонент также имеет сокет PULL, который прослушивает пропущенные сообщения на отдельном порту.

Абонент будет:

  1. Обнаружение пробела
  2. Отправьте запрос о пропущенных сообщениях в наш CatchupService, запрос также содержит адрес, на который следует отправить результаты.
  3. Служба перехвата имеет сокет PULL, на котором она прослушивает запросы.
  4. When the CatchupService receives a request it starts a worker thread which:
    1. Gets the missed messages
    2. Открывает сокет PUSH, подключающийся к сокету PULL абонента.
    3. Отправляет пропущенные сообщения подписчику.

Кажется, это работает довольно хорошо, однако мы не уверены, используем ли мы правильные типы сокетов для такого рода приложений. Являются ли они правильными или должны использовать другой шаблон.

30.01.2014

Ответы:


1

Звучит нормально. В противном случае 0MQ может восстановиться после потери сообщений, когда одноранговые узлы отключаются на короткое время. Взгляните на параметры сокета и, в частности, параметр ZMQ_SNDHWM.

Я не знаю, насколько гарантированы механизмы восстановления 0MQ, поэтому, возможно, вам лучше оставаться с тем, что у вас есть, но об этом следует знать.

04.02.2014
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


© 2024 wedx.ru, WedX - журнал о программировании и компьютерных науках
Для любых предложений по сайту: [email protected]