Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 [8] 9 10 11   вперед  Ctrl      все
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД
Guest
Dima T
PPA
Dima 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.

Теперь собирается.
25 янв 17, 15:14    [20144974]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД
Guest
Похоже, что nanomsg таки сдулся, автор несколько месяцев не модифицирует исходники... "сообщество" что-то изредка правит, и все...

А zeromq - напротив, цветет и пахнет, несмотря на то, что умер один из основных разработчиков.
Вот что значит поддержка со стороны большой конторы.
9 май 17, 01:17    [20466022]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
Коллеги, приветствую!
Стою на пороге тотального переписывания сетевого кода в клиент-серверном приложении.
Половину дня просидел изучая что русскоязычные люди пишут про ZeroMQ.
Очень нравится, ясно что надо изучать гайд с офф сайта.
Но не хочется терять время, т.к. кое-что насторожило.
Может вы мне поможите, просветите:
1) на ОС Windows от WinXP (самая ходовая по регионам необъятной родины) нужен и сервер и клиент, ZeroMQ умеет XP или поддержку отключили и больше не будет? Ну т.е. я вижу что на гитхабе есть проект _xp, но вот к примеру сокеты ZMQ_SERVER и ZMQ_CLIENT будут на ней работать? И по вашим ощущениям, не выпилят с очередным релизом (и не останусь я потом сидеть с необновляемой библиотекой?)
2) С Vista и т.д. сервер сможет держать больше сотни коннектов? Т.е. ZeroMQ реально юзает только select в винде, APC не умеет?
3) На linux ZeroMQ умеет МНОГА коннектов? Мне надо 14 тыс постоянных (но слабоактивных) для мониторинга и вялого обмена сообщениями.
5) Где-то прочёл что опасно ZeroMQ смотреть в эти ваши интернеты, заDDOSят мол. Есть у кого опыт, соображения на этот счёт, правда защиты от мусора нет совсем?
6) Технический момент: в итоге-то решение найдено по отключению "мёртвых" клиентов, да? Т.е. я беру любой протокол с поддержкой хардбитинга (или пинг-понга, если есть) и использую, верно?
27 июн 17, 18:38    [20594806]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД
Guest
Антон Аксёнов
Коллеги, приветствую!
Стою на пороге тотального переписывания сетевого кода в клиент-серверном приложении.
Половину дня просидел изучая что русскоязычные люди пишут про 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. Мертвых клиентов рекомендуют "стряхивать". Или периодически(раз в сутки - в час-в минуту, по ситуации) , или когда их (мертвых) становится слишком (по мнению серверного софта) много. Делается тупым образом: сервер разрушает входящий сокет и создает новый, живые клиенты реконнектятся, мертвые - нет.
28 июн 17, 19:58    [20597954]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3449
Антон Аксёнов
5) Где-то прочёл что опасно ZeroMQ смотреть в эти ваши интернеты, заDDOSят мол. Есть у кого опыт, соображения на этот счёт, правда защиты от мусора нет совсем?

обычно это не актуально, nginx на внешку, как правило, решает такие проблемы - а что с ним делать, знает большинство админов
28 июн 17, 20:04    [20597964]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 794
kealon(Ruslan)
Антон Аксёнов
5) Где-то прочёл что опасно ZeroMQ смотреть в эти ваши интернеты, заDDOSят мол. Есть у кого опыт, соображения на этот счёт, правда защиты от мусора нет совсем?

обычно это не актуально, nginx на внешку, как правило, решает такие проблемы - а что с ним делать, знает большинство админов


подробнее - как nginx cможет прозрачно прокинуть коннект до zmq и тем более защитить от ddos?
29 июн 17, 08:17    [20598478]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
kealon(Ruslan)
Member

Откуда: Нижневартовск
Сообщений: 3449
PPA
подробнее - как nginx cможет прозрачно прокинуть коннект до zmq и тем более защитить от ddos?

хотя бы вот так, хоть и experimental, но всё равно лучше чем напрямую. ещё где-то проекты были

ну а как от ddos защищаться, это уже к админам nginx
29 июн 17, 09:07    [20598549]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 908
А использовать очередь от Амазона? С одной стороны конечно стороннее решение, с другой вся головная боль о поддержке соотвествующей инфтраструкруты ложится на чужие плечи, а бесплатных сообщений в месяц там много на что хватить может. Мы использовали, правда в софте на Андроид, весьма неплохо работало.
29 июн 17, 09:26    [20598585]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
чччД,

Спасибо за столь обстоятельный ответ!
Что значит "вкомпиленый" - это не надо будет dll с собой таскать? Мы же про Delphi говорим, да?
В любом случае, высылайте :) Coriolis inbox ru Спасибо!
29 июн 17, 09:44    [20598648]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 794
Антон Аксёнов
Что значит "вкомпиленый" - это не надо будет dll с собой таскать? Мы же про Delphi говорим, да?

В случае с делфи таскать dll от zmq в любом случае придется, но она будет одна без dll-рантайма от микрософта.
29 июн 17, 12:59    [20599348]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД
Guest
Антон Аксёнов
чччД,

Спасибо за столь обстоятельный ответ!
Что значит "вкомпиленый" - это не надо будет dll с собой таскать? Мы же про Delphi говорим, да?
В любом случае, высылайте :) Coriolis inbox ru Спасибо!

"Вкомпиленный" == речь о рантайме SDK C++ MS VS 2015. Все теперь включено в libzmq.dll, больше не потребуются другие dll, типа msvcp120.dll и msvcr120.dll.
Т.е., одну dll (libzmq.dll) все же таскать с собой придется. :)
...
Выслал.
29 июн 17, 13:01    [20599354]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
чччД, PPA,

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

Файлы на почту пока не пришли, если что.
29 июн 17, 13:12    [20599400]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД
Guest
Антон Аксёнов,

К сообщению приложен файл. Размер - 2Kb
29 июн 17, 13:24    [20599455]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 794
чччД,

Аттач 2 кб?
вероятно гугл отрезал dll-ку
лучше такие вещи кидать через облако или в архив с паролем сувать :)
29 июн 17, 13:47    [20599539]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
Я так и не получил письмо, по скрину - адрес верный. Нигде нет, ни в папках со спамом, вообще нигде. Странно.
Может, правда, gdrive, ydisck... ?
29 июн 17, 13:48    [20599546]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД
Guest
Антон Аксёнов,

https://cloud.mail.ru/public/Mv7C/85z8Lt9E9
29 июн 17, 14:03    [20599592]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
чччД,

Здорово, тут еще и обёртка высокоуровневая, спасибо!
29 июн 17, 14:09    [20599616]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД
Guest
Антон Аксёнов
чччД,

Здорово, тут еще и обёртка высокоуровневая, спасибо!

Громко сказано: обёртка самая минимальная: работа с только с самыми базовыми вещами (я добавлял функционал по мере надобности): создать контекст, создать сокет, сформировать составное сообщение, принять/отправить составное сообщение, создать "прикрепленный" поток (для работы поллера).
29 июн 17, 14:21    [20599645]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
чччД,

На первых парах мне это и нужно, лишнее только будет отвлекать. В любом случае контроль целостности, очерёдности доставки, пакетирование логических каналов в один физический - делать буду сам. Мне от ZeroMQ нужы только сокеты которые умеют переподключаться в случае обрыва, ну т.е. все плюшки сокетов ZeroMQ.
29 июн 17, 14:31    [20599666]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
PPA
Member

Откуда: Караганда -> Липецк
Сообщений: 794
Антон Аксёнов,

Пишете тут об успехах и проблемах... тоже интересно направление zmq + xp
29 июн 17, 14:45    [20599713]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
Коллеги, прошу прощения что взбаламутил тему, понял что ZeroMQ мне мимо.

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

Всплакнул, ушёл курить ICS, он ближе к железу...
А под никсы придётся lNet курить, (на котоые автор забил).
30 июн 17, 14:30    [20603069]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД
Guest
Антон Аксёнов,

и что ж вы такое делаете-то? ...
...
Вчерась в одном из подразделений РЖД запустили систему на базе zmq, с перепугу заранее опций для тюнинга понавтыкали, а оно и так завелось, протестировали потенциально тяжелые случаи вроде кратковременных и долговременных обрывов связи, а также массовой заливки данных, и домой разъехались, сейчас в окошко на ураган смотрю...
30 июн 17, 14:50    [20603176]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
чччД,

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

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

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

Кстати, а WaterMark не поможет ли мне опосредованно понять что сетевой буфер отправки переполнился?
30 июн 17, 15:14    [20603276]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
Антон Аксёнов
Member

Откуда:
Сообщений: 33
Т.е. если я поставлю WaterMark в 1 (что-то маленькое), поулчится 0mq не вернёт мне управления пока предыдущий пакет действительно не удёт?
30 июн 17, 15:18    [20603300]     Ответить | Цитировать Сообщить модератору
 Re: ZeroMQ - сокеты на стероидах, часть 3 (а для чего?).  [new]
чччД
Guest
Антон Аксёнов,

у меня тоже все записи сразу клиент видит (вернее, он так думает, что видит), совсем просто: от сервера сперва получаешь списик id's - очень быстро (1млн id's - всего лишь 4 мегабайта), при отображении записей в окне я знаю (мне об этом сообщает компонент отображения) диапазон id's для показа - только записи с этими id's я и подгружаю в кэш. Никакого zmq, использую Firebird & fib+, в качестве средства отображегия - VTV и DevEx, они умеют работать в таком режиме практически "искаропки".
...хотя, если у тебя на клиенте показывается не миллион, а миллиард записей - такой способ уже не годится: 4Гб данных id's тянуть на клинта не гут.
30 июн 17, 15:47    [20603442]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 7 [8] 9 10 11   вперед  Ctrl      все
Все форумы / Delphi Ответить