metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-11-06 02:36 pm

Авторы ZeroMQ отрицают вред

Сидел читал про ZeroMQ (он, несмотря на отсутствие персистентности, наиболее близок к тому, что мне надо для решения задачи). При этом в гайде попались две ссылки, отрицающие энтерпрайзно-бизнесовый вред:
http://swsi.info/
http://www.imatix.com/articles:whats-wrong-with-amqp/
Особенно весело про amqp, как комитет по его разработке объебался во всех формах, что привело к нескольким плохо совместимым реализациям, которые, в свою очередь, начали диктовать разработку стандарта.

[identity profile] mikkim08.livejournal.com 2014-11-06 11:40 am (UTC)(link)
А что за задача и почему ZeroMQ ? Вдруг и мне тоже надо.

[identity profile] metaclass.livejournal.com 2014-11-06 12:00 pm (UTC)(link)
Около десятка сервисов, которым нужно обмениваться сообщениями, при этом каналы связи ненадежные, и воткнуть broker-based MQ толком некуда.
Сейчас очередь сделана поверх БД, но это приводит к очень дурному характеру нагрузки на диски+плюс баги Firebird, в итоге много тупого геморроя.

[identity profile] wildman.livejournal.com 2014-11-06 12:15 pm (UTC)(link)
а не смотрели в таком разрезе мессаджинг поверх redis например?

[identity profile] hshhhhh.livejournal.com 2014-11-06 04:40 pm (UTC)(link)
ну там subscribe дурацкий и не умеет в оффлайн.
а mq это и есть мессаджинг поверх redis

[identity profile] gds.livejournal.com 2014-11-06 01:50 pm (UTC)(link)
я тоже взял zeromq сначала -- типа легковесное, биндинги есть, модно, но -- былинный отказ. Мудацкий req-rep по отношению к реконнектам, теряет сообщения, мутные router/dealer.
Кароч взял ocamlmq, научил его встраиваться в процесс (а не висеть отдельным процессом), налепил абстракцию "сервер" (хуйнюшка, к которой можно connect, далее send/recv _сообщений_), сделал переходники между "сервером" и потоком байтиков в tcp/ip, и ocamlmq теперь даёт как по tcp/ip, так и внутри процесса.
Сейчас доделываю абстракцию "клиент-сервер поверх очередей сообщений". Соединения, таймауты, очистка очередей по завершении, реконнекты.
Следующий этап -- умение указывать "вот такие-то очереди локального процесса копируй на удалённый процесс" и стыковка с "клиент-сервером". Что получу в конце: процесс срёт только в локальные очереди сообщений (встроенные в процесс), ocamlmq мгновенно кидает на диск сообщения (в том числе в свои надёжные бинлоги, где fsync на каждую запись), а далее, если с сетью всё ок, оно перекидывается к адресату.
Вот это -- надёжно. А не zeromq.

[identity profile] metaclass.livejournal.com 2014-11-06 02:16 pm (UTC)(link)
Ясно. У меня примерно то же самое, но я надеялся избежать необходимости доделывать его до полноценного mq с транзакциями и fsync :)

[identity profile] gds.livejournal.com 2014-11-06 02:32 pm (UTC)(link)
а так ли нужны транзакции в очередях сообщений? Просто у меня их нет, и ещё не смог придумать пример, где бы они были аж очень нужны.

[identity profile] eternal-leave.livejournal.com 2014-11-06 06:45 pm (UTC)(link)
fsync() на каждое сообщение? оО

[identity profile] gds.livejournal.com 2014-11-06 06:54 pm (UTC)(link)
надёжность? Oo

[identity profile] eternal-leave.livejournal.com 2014-11-06 07:07 pm (UTC)(link)
15k msg/sec с пиками до 30k?

[identity profile] gds.livejournal.com 2014-11-06 08:03 pm (UTC)(link)
гораздо меньше. Но тут уж выбор -- надёжность или скорость. В требованиях -- 1. максимальная надёжность, 2. не менее 100 сообщений в секунду. Вписываюсь с запасом!

[identity profile] prepor.livejournal.com 2014-11-06 12:26 pm (UTC)(link)
Можно подумать авторы зероэмку не объебались :)

сначала zeromq, потом crossroads-io (https://github.com/crossroads-io/libxs), сейчас http://nanomsg.org/. Вот и выбирай! :)

C++ lib as specification, бгг

[identity profile] lionet.livejournal.com 2014-11-06 12:50 pm (UTC)(link)
ZeroMQ даст свой геморрой, неочевидный на ранних стадиях рассмотрения технологии.

Например, при наличии мигрирующих клиентов (клиентов, у которых меняются айпишники) ZeroMQ будет течь. Бай дизайн.

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

Ну или невозможность сделать прокси без встроенной потери сообщений при разрывах коннекта, и необходимостью коиенту завязываться на _per message_ timeouts, вместо реакции на разрыв канала целиком.



[identity profile] metaclass.livejournal.com 2014-11-06 12:58 pm (UTC)(link)
Да, тоже печаль. Непонятно куды бечь.

[identity profile] jakobz.livejournal.com 2014-11-06 03:02 pm (UTC)(link)
А чего вообще принято пользовать как эдакую мейнстрим-fits-all MQ? Ну типа надо мне очередь, в перформанс скорее всего не упрусь - чего ща берут в таком случае? Rabbit - ок или там засады какие?

[identity profile] metaclass.livejournal.com 2014-11-06 03:56 pm (UTC)(link)
rabbit (и прочие брокеры) ок, если есть заведомо доступный сервер, где он будет стоять.
Вроде принципиальных проблем я не наблюдал с ним.

Другие брокеры(qpid, activemq) поддерживают другие версии протокола, клиенты поддерживают кто во что горазд, единства не наблюдается.

[identity profile] jakobz.livejournal.com 2016-09-10 12:09 am (UTC)(link)
Взяли ее

[identity profile] jakobz.livejournal.com 2016-09-10 12:14 am (UTC)(link)
Вообще, спасибо за совет. Оно ппц как геморно разворачивается, но в нашем масштабе отобьется. Напишу пост если взлетит. Но если уж взлетит и отобъется - с меня бутылка.

[identity profile] nivanych.livejournal.com 2014-11-06 01:28 pm (UTC)(link)
> Авторы ZeroMQ отрицают вред
А есть у нас статья за отрицание вреда?
Нет? Срочно надо ввести!

[identity profile] prepor.livejournal.com 2014-11-06 03:50 pm (UTC)(link)
Кстати, а у вас же ява везде? Что-нибудь про www jgroups org скажете?

[identity profile] metaclass.livejournal.com 2014-11-06 03:54 pm (UTC)(link)
Не, у меня жабы мало и та в ипостаси кложури :)

[identity profile] d4s.livejournal.com 2014-11-06 06:03 pm (UTC)(link)
А у тебя большая нагрузка?
И тебе точно MQ надо?

а то есть штуки вроде flume и logstash.
за logstash не скажу, а flume умеет и персистентность и данные любого вида, хотя нативно предполагается AVRO messages

[identity profile] metaclass.livejournal.com 2014-11-06 06:11 pm (UTC)(link)
Нагрузка - примерно 100 мессаг в секунду, брокер сунуть некуда, железо SOHO/бытовуха, сети ненадежные, процесс эксплуатации и обслуживания подразумевает периодические рестарты любых частей системы )

[identity profile] d4s.livejournal.com 2014-11-07 07:16 am (UTC)(link)

если есть куда засунуть отдельные процессы для приема-отправки, то вполне себе ок.
посмотри текста на сайте lvee на эту тему с примером. там процентов 20-30 от возможностей вкратце описаны

[identity profile] permea-kra.livejournal.com 2014-11-07 07:28 am (UTC)(link)
... в основном жесткие, мыши грызут проводку, пауки шуршат в жестких дисках, клиент о RAID слышали, но в панике убежали.

[identity profile] metaclass.livejournal.com 2014-11-07 08:09 am (UTC)(link)
С RAID проблемы.
Клиенты про них слышали, но используют встроенные в материнские платы серверов или отдельные недоконтроллеры, без батареек и без памяти. Само собой, запасных контроллеров и дисков нет, а настраивать мониторинг здоровья рейдов админы не умеют.

Все это приводит к неприятным последствиям вида "рейд давно сдох, но про это никто не знает".

[identity profile] permea-kra.livejournal.com 2014-11-07 10:36 am (UTC)(link)
Бида-пичаль. Ежедневные бэкапы они хотя бы умеют? Про горячее резервирование не спрашиваю.

[identity profile] metaclass.livejournal.com 2014-11-07 11:32 am (UTC)(link)
Умеют. На тот же диск, где все остальное :)

[identity profile] kkirsanov.livejournal.com 2014-11-07 09:13 am (UTC)(link)
Использую zmq -до 1000 сообщений/ceк, до 100 общающихся процессов в одной сети и через vpn обрывы связи 10 раз в день - проблем нет никаких.

Но думаю при таких условиях у почти любой технологии не было бы проблем.