Message Queue
May. 24th, 2014 02:23 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Чо-то я не совсем понимаю идеологию работы с сабжами в случае, когда нет гарантии работоспособности промежуточных узлов.
Вот например, есть кролик (rabbitmq), на сервере. В него какие-нибудь клиентские программы складывают данные на обработку специально обученными пауками. Теперь приходит белтелеком, крадет у нас связность между сервером и клиентом, или например, админ, которому не досталось личной ежихи в дурдоме - режет витую пару и плетет из нее макраме.
Соответственно, клиентская прога должна в это время копить сообщения для очереди в себе и дожидаться пока санитары повяжут админа и восстановят доступность сервера. Причем делать это корректно даже в том случае, если электрики решат, что именно сегодня надо отключить электропитание.
Но это ж ведь блин получается, что в клиентской библиотеке должна быть такая же очередь со всеми потрохами - персистентностью, каким-то внешним хранилищем для недоставленных мессаг и прочим таким. В итоге, вместо клиент-серверной модели мы получаем какую-то распределенную хрень, когда и на клиенте и на сервере стоят одинаковые сервера очередей и занимаются между собой греховной репликацией.
Внимание вопрос: а что из готовых решений в такое умеет? А то самодельные очереди СУБД немного задолбали, не говоря уже о том, что и СУБД может сдохнуть не вовремя, соответственно, складируемые в нее сообщения надо тоже складывать в какую-то очередь на этот случай.
Вот например, есть кролик (rabbitmq), на сервере. В него какие-нибудь клиентские программы складывают данные на обработку специально обученными пауками. Теперь приходит белтелеком, крадет у нас связность между сервером и клиентом, или например, админ, которому не досталось личной ежихи в дурдоме - режет витую пару и плетет из нее макраме.
Соответственно, клиентская прога должна в это время копить сообщения для очереди в себе и дожидаться пока санитары повяжут админа и восстановят доступность сервера. Причем делать это корректно даже в том случае, если электрики решат, что именно сегодня надо отключить электропитание.
Но это ж ведь блин получается, что в клиентской библиотеке должна быть такая же очередь со всеми потрохами - персистентностью, каким-то внешним хранилищем для недоставленных мессаг и прочим таким. В итоге, вместо клиент-серверной модели мы получаем какую-то распределенную хрень, когда и на клиенте и на сервере стоят одинаковые сервера очередей и занимаются между собой греховной репликацией.
Внимание вопрос: а что из готовых решений в такое умеет? А то самодельные очереди СУБД немного задолбали, не говоря уже о том, что и СУБД может сдохнуть не вовремя, соответственно, складируемые в нее сообщения надо тоже складывать в какую-то очередь на этот случай.
no subject
Date: 2014-05-24 12:28 am (UTC)no subject
Date: 2014-05-24 06:34 am (UTC)no subject
Date: 2014-05-24 07:00 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-05-24 03:28 am (UTC)сейчас, наверное, в дотнетовской обёртке что-то такое должно быть
(no subject)
From:no subject
Date: 2014-05-24 04:16 am (UTC)no subject
Date: 2014-05-24 06:19 am (UTC)no subject
Date: 2014-05-24 04:39 am (UTC)no subject
Date: 2014-05-24 06:18 am (UTC)no subject
Date: 2014-05-24 02:58 pm (UTC)no subject
Date: 2014-05-24 06:22 am (UTC)no subject
Date: 2014-05-24 06:44 am (UTC)no subject
Date: 2014-05-24 07:50 am (UTC)Диванным теоретикам предлагаю описать алгоритм гарантированой доставки каждого сообщения в единственно мэкземпляре в условиях network parition (ага call me maybe -- это про это)
no subject
Date: 2014-05-24 05:44 pm (UTC)(no subject)
From:no subject
Date: 2014-05-24 08:03 am (UTC)no subject
Date: 2014-05-24 08:36 am (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2014-05-24 06:27 pm (UTC)Visibility Timeout все решает
если я правильно понял проблему
no subject
Date: 2014-05-24 02:47 pm (UTC)no subject
Date: 2014-05-24 08:23 pm (UTC)Через СУБД делать не стоит - это уродское решение. Однако хорошее решение навскидку не скажу.
no subject
Date: 2014-05-25 11:51 pm (UTC)If a scribe instance on a client machine (we’ll call it a resender for the moment) is unable to send messages to the central scribe server it saves them on local disk, then sends them when the central server or network recovers.
no subject
Date: 2014-05-26 10:28 am (UTC)no subject
Date: 2014-05-26 11:13 am (UTC)Однажды Онуфрий описывал очередь обработки. Освоил объекты, оглядел Оракл. Отладил операции, обрывы, ожидание. Обфусцировал, оформил окончательно. Одокументил окружение, обслуживание.
Очередь обработки оголтело отколбасила около осьми оборотов. Отключившись, околела окаянная. Огорчился Онуфрий. Откупорил, опрокинул, откусил окорок, окосел.
Оклемавшись, отправился одолевать Окамл. Однако! Очаровывает однозначно.
Опешил Онуфрий. Обдумал обновлённую, оригинальную очередь. Окамл, О'Рейли, отправка-обработка, одобрение-отклонение, от оно! Описал, отладил.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-05-26 11:23 am (UTC)(no subject)
From:no subject
Date: 2014-05-29 02:30 am (UTC)Он идёт в поставке, начиная с XP, имеет хорошую поддержку в .NET
no subject
Date: 2014-06-09 07:07 pm (UTC)