powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
25 сообщений из 260, страница 8 из 11
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39391236
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TPPADima T,

А PR в upstream не планируешь послать?
https://github.com/zeromq/libzmq/pulls
Отправил. Приняли. Можете пользоваться. Проект для сборки .
Опять сломали. Проект libzmq "для WinXP" не собирается:

ЭГГОГОшибка LNK2019 ссылка на неразрешенный внешний символ _zmq_z85_decode в функции "public: int __thiscall zmq::options_t::set_curve_key(unsigned char *,void const *,unsigned int)" (?set_curve_key@options_t@zmq@@QAEHPAEPBXI@Z) libzmq D:\libzmq\builds\msvc\vs2015_xp\options.obj 1

Решение: в список файлов проекта libzmq добавить файл zmq_utils.cpp.

Теперь собирается.
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39450211
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, что nanomsg таки сдулся, автор несколько месяцев не модифицирует исходники... "сообщество" что-то изредка правит, и все...

А zeromq - напротив, цветет и пахнет, несмотря на то, что умер один из основных разработчиков.
Вот что значит поддержка со стороны большой конторы.
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39478667
Коллеги, приветствую!
Стою на пороге тотального переписывания сетевого кода в клиент-серверном приложении.
Половину дня просидел изучая что русскоязычные люди пишут про ZeroMQ.
Очень нравится, ясно что надо изучать гайд с офф сайта.
Но не хочется терять время, т.к. кое-что насторожило.
Может вы мне поможите, просветите:
1) на ОС Windows от WinXP (самая ходовая по регионам необъятной родины) нужен и сервер и клиент, ZeroMQ умеет XP или поддержку отключили и больше не будет? Ну т.е. я вижу что на гитхабе есть проект _xp, но вот к примеру сокеты ZMQ_SERVER и ZMQ_CLIENT будут на ней работать? И по вашим ощущениям, не выпилят с очередным релизом (и не останусь я потом сидеть с необновляемой библиотекой?)
2) С Vista и т.д. сервер сможет держать больше сотни коннектов? Т.е. ZeroMQ реально юзает только select в винде, APC не умеет?
3) На linux ZeroMQ умеет МНОГА коннектов? Мне надо 14 тыс постоянных (но слабоактивных) для мониторинга и вялого обмена сообщениями.
5) Где-то прочёл что опасно ZeroMQ смотреть в эти ваши интернеты, заDDOSят мол. Есть у кого опыт, соображения на этот счёт, правда защиты от мусора нет совсем?
6) Технический момент: в итоге-то решение найдено по отключению "мёртвых" клиентов, да? Т.е. я беру любой протокол с поддержкой хардбитинга (или пинг-понга, если есть) и использую, верно?
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479311
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон АксёновКоллеги, приветствую!
Стою на пороге тотального переписывания сетевого кода в клиент-серверном приложении.
Половину дня просидел изучая что русскоязычные люди пишут про ZeroMQ.
Очень нравится, ясно что надо изучать гайд с офф сайта.
Но не хочется терять время, т.к. кое-что насторожило.
Может вы мне поможите, просветите:
1) на ОС Windows от WinXP (самая ходовая по регионам необъятной родины) нужен и сервер и клиент, ZeroMQ умеет XP или поддержку отключили и больше не будет? Ну т.е. я вижу что на гитхабе есть проект _xp, но вот к примеру сокеты ZMQ_SERVER и ZMQ_CLIENT будут на ней работать? И по вашим ощущениям, не выпилят с очередным релизом (и не останусь я потом сидеть с необновляемой библиотекой?)
2) С Vista и т.д. сервер сможет держать больше сотни коннектов? Т.е. ZeroMQ реально юзает только select в винде, APC не умеет?
3) На linux ZeroMQ умеет МНОГА коннектов? Мне надо 14 тыс постоянных (но слабоактивных) для мониторинга и вялого обмена сообщениями.
5) Где-то прочёл что опасно ZeroMQ смотреть в эти ваши интернеты, заDDOSят мол. Есть у кого опыт, соображения на этот счёт, правда защиты от мусора нет совсем?
6) Технический момент: в итоге-то решение найдено по отключению "мёртвых" клиентов, да? Т.е. я беру любой протокол с поддержкой хардбитинга (или пинг-понга, если есть) и использую, верно?

1. ХР использовать можно, см. первое сообщение на этой страничке. Мы-используем (вернее, у нас есть покупатели, использующие WinXP). Сокеты типа ZMQ_SERVER и ZMQ_CLIENT, и также протокол TCP iPV6 будут недоступны.
И да, обязательно рано или поздно поддержку XP выпилят: 2017 год на дворе. И что? Люди до сих пор zmq версий 2.* используют, "чтобы работало на всём". В данный момент мы используем последнюю (опубликованную 2016/12/32) версию v4.2.1, собранную именно для WinXP (с "вкомпиленным" рантаймом), если надо - могу прислать.

2. Вопрос не вполне понятен. Если интересна внутренняя реализация zmq, можно посмотреть исходники. Например, метод zmq_Poll() (см. файл soсket_poller.cpp)в винде использует select() (из winsock2.h). Есть ограничение на число сокетов, используемых в zmq_poll() -> не более 1024 (можно обойти и увеличить, многократно писали как, примерно в 50 раз (фактически ограничение связано с числом доступных tcp портов в системе).

Но, к примеру, я тестировал сервер всего с одним (не считая INPROC сокета) TCP сокетом типа ROUTER с парой тысяч входящих (активных!) коннектов, в качестве сервера была обычная офисная машинка с Win7x64, сервер загружал процессор на 5-7%. Естественно, можно и больше, но конкретно с моим софтом каждый отдельный клиент создает в ОЗУ довольно большой внутренний контекст, и в 32-битном приложении сие вызовет скорый затык, но для меня вполне достаточно.

3. Что такое linux - не знаю, и пока не планирую восполнять сей пробел. Я бы на вашем месте написал тест, приближенный к требованиям пятки левой ноги, работы совсем немного.

4. Да. :)

5. Пишут, что это было раньше, до какой-то из версий библиотеки 2.*. Дальше я не читал, поэтому ничего более сказать не могу, ибо использовал zmq только в локальных сетях. Возможно, скоро ситуацию изменится, и мы вылезем в интернет, вот тогда и будем разбираться.

6. Мертвых клиентов рекомендуют "стряхивать". Или периодически(раз в сутки - в час-в минуту, по ситуации) , или когда их (мертвых) становится слишком (по мнению серверного софта) много. Делается тупым образом: сервер разрушает входящий сокет и создает новый, живые клиенты реконнектятся, мертвые - нет.
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479316
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Аксёнов 5) Где-то прочёл что опасно ZeroMQ смотреть в эти ваши интернеты, заDDOSят мол. Есть у кого опыт, соображения на этот счёт, правда защиты от мусора нет совсем?
обычно это не актуально, nginx на внешку, как правило, решает такие проблемы - а что с ним делать, знает большинство админов
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479435
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)Антон Аксёнов 5) Где-то прочёл что опасно ZeroMQ смотреть в эти ваши интернеты, заDDOSят мол. Есть у кого опыт, соображения на этот счёт, правда защиты от мусора нет совсем?
обычно это не актуально, nginx на внешку, как правило, решает такие проблемы - а что с ним делать, знает большинство админов

подробнее - как nginx cможет прозрачно прокинуть коннект до zmq и тем более защитить от ddos?
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479455
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPAподробнее - как nginx cможет прозрачно прокинуть коннект до zmq и тем более защитить от ddos?
хотя бы вот так , хоть и experimental, но всё равно лучше чем напрямую. ещё где-то проекты были

ну а как от ddos защищаться, это уже к админам nginx
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479463
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А использовать очередь от Амазона? С одной стороны конечно стороннее решение, с другой вся головная боль о поддержке соотвествующей инфтраструкруты ложится на чужие плечи, а бесплатных сообщений в месяц там много на что хватить может. Мы использовали, правда в софте на Андроид, весьма неплохо работало.
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479476
чччД,

Спасибо за столь обстоятельный ответ!
Что значит "вкомпиленый" - это не надо будет dll с собой таскать? Мы же про Delphi говорим, да?
В любом случае, высылайте :) Coriolis inbox ru Спасибо!
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479623
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон АксёновЧто значит "вкомпиленый" - это не надо будет dll с собой таскать? Мы же про Delphi говорим, да?

В случае с делфи таскать dll от zmq в любом случае придется, но она будет одна без dll-рантайма от микрософта.
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479625
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон АксёновчччД,

Спасибо за столь обстоятельный ответ!
Что значит "вкомпиленый" - это не надо будет dll с собой таскать? Мы же про Delphi говорим, да?
В любом случае, высылайте :) Coriolis inbox ru Спасибо!
"Вкомпиленный" == речь о рантайме SDK C++ MS VS 2015. Все теперь включено в libzmq.dll, больше не потребуются другие dll, типа msvcp120.dll и msvcr120.dll.
Т.е., одну dll (libzmq.dll) все же таскать с собой придется. :)
...
Выслал.
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479633
чччД, PPA,

А, понял, я и забыл про рантаймы :) А то я уж было подумал что есть какой-то джедайский способ компилить файлы для инклуда в проект)))
А dll потаскать можно (хотя и не очень хочется конечно). Думаю хуки поставлю на CreateFile, ReadFile и буду грузить из памяти модуль, никто не пробовал так?

Файлы на почту пока не пришли, если что.
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479645
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Аксёнов,
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479658
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чччД,

Аттач 2 кб?
вероятно гугл отрезал dll-ку
лучше такие вещи кидать через облако или в архив с паролем сувать :)
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479662
Я так и не получил письмо, по скрину - адрес верный. Нигде нет, ни в папках со спамом, вообще нигде. Странно.
Может, правда, gdrive, ydisck... ?
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479673
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479680
чччД,

Здорово, тут еще и обёртка высокоуровневая, спасибо!
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479689
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон АксёновчччД,

Здорово, тут еще и обёртка высокоуровневая, спасибо!
Громко сказано: обёртка самая минимальная: работа с только с самыми базовыми вещами (я добавлял функционал по мере надобности): создать контекст, создать сокет, сформировать составное сообщение, принять/отправить составное сообщение, создать "прикрепленный" поток (для работы поллера).
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479697
чччД,

На первых парах мне это и нужно, лишнее только будет отвлекать. В любом случае контроль целостности, очерёдности доставки, пакетирование логических каналов в один физический - делать буду сам. Мне от ZeroMQ нужы только сокеты которые умеют переподключаться в случае обрыва, ну т.е. все плюшки сокетов ZeroMQ.
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39479711
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Аксёнов,

Пишете тут об успехах и проблемах... тоже интересно направление zmq + xp
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39480424
Коллеги, прошу прощения что взбаламутил тему, понял что ZeroMQ мне мимо.

У меня по техзаданию есть некие Состояния. Эта такая штука которую протокол отправки данных должен считать (сам!) в самый послелдний момент перед реальной отправкой пакета данных в сеть (в буфер сетевого драйвера). Понятно для того чтобы второй стороне ушли как можно более свежие данные и чтобы небыло спама.
А у 0MQ концепция другая совсем, там к очереди в частности и к низкоуровневым сокетам в целом не пускают.

Всплакнул, ушёл курить ICS, он ближе к железу...
А под никсы придётся lNet курить, (на котоые автор забил).
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39480450
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Аксёнов,

и что ж вы такое делаете-то? ...
...
Вчерась в одном из подразделений РЖД запустили систему на базе zmq, с перепугу заранее опций для тюнинга понавтыкали, а оно и так завелось, протестировали потенциально тяжелые случаи вроде кратковременных и долговременных обрывов связи, а также массовой заливки данных, и домой разъехались, сейчас в окошко на ураган смотрю...
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39480467
чччД,

Ничего адски-специфичного, просто интерфейс.
-много прогресс-баров (наша БД позволяет а мы этим вовсю пользуемся.)
-много таблиц "я покажу тебе ВСЕ строки" с большим бегунком, но грузящие только нужные строки с сервера, соотвтетсвенно при скроле надо считать только действительно те строки на которые юзер видит в гриде. Тут главная мера ввести задержку, так сейчас и работает, но если сам сетевой движок будет брать текущую позицию (опосредованно через состояние) то эту задержку можно сильно уменьшить, визуально выглядит очень круто.
...
Отдельная песня, стандартный аргумет "зачем показывать сразу всё, покажи по буквам алфавита/категориям пусть юзер начнёт фильтровать и результат уже показывай" и т.д., на самом деле наболело - кажыдй пытается придумать аргументы что такой подход неверн, но он востребован в реальной жизни, пользователи его любят (потому что удобный). Чем он удобен: пользователь ищет позицию в номенклатуре, он не помнит её название (либо как точно пишется) но хорошо знает что по алфавиту она следует за точно известной ему позицией (или перед ней). Профит, он ищет известную ему позицию и перемещает курсор вверх/вниз. Такая схема работает у нас годами (скоро десятилетиями), сломать её - это ну я не знаю с чем сравнимо, да ни с чем)))
Такой большой абзац потому что, повторюсь, наболело)
...

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

-В дальних планах передача видеопотока, тут то же самое - кадр это состояние: один поток обновляет состояние а другой считывает и передаёт в сеть - в итоге получаем потерю кадров вместо переполненного буфера при кратковременных затыках с сетью (понятно что тут тоже будет переполненный буфер, потому что отправляющая сторона только через heartbeat interval поймёт что что-то не так и перестанет отправлять, но тут буфер будет расти небольшой интервал а в zmq по WaterMark)

Кстати, а WaterMark не поможет ли мне опосредованно понять что сетевой буфер отправки переполнился?
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39480472
Т.е. если я поставлю WaterMark в 1 (что-то маленькое), поулчится 0mq не вернёт мне управления пока предыдущий пакет действительно не удёт?
...
Рейтинг: 0 / 0
ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
    #39480497
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Аксёнов,

у меня тоже все записи сразу клиент видит (вернее, он так думает, что видит), совсем просто: от сервера сперва получаешь списик id's - очень быстро (1млн id's - всего лишь 4 мегабайта), при отображении записей в окне я знаю (мне об этом сообщает компонент отображения) диапазон id's для показа - только записи с этими id's я и подгружаю в кэш. Никакого zmq, использую Firebird & fib+, в качестве средства отображегия - VTV и DevEx, они умеют работать в таком режиме практически "искаропки".
...хотя, если у тебя на клиенте показывается не миллион, а миллиард записей - такой способ уже не годится: 4Гб данных id's тянуть на клинта не гут.
...
Рейтинг: 0 / 0
25 сообщений из 260, страница 8 из 11
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]