Название: многопоточное приложение опроса на 5000 устройств Отправлено: pethead от Ноябрь 18, 2010, 17:02 subj
как правильно построить архитектуру не прибегая к созданию потока на каждое устройство. каждое устройство требует непрерывного опроса состояния ну скажем раз в секунду. устройства добавляются и удаляются не прерывая опрос остальных. есть буржуйская разработка, там вроде на каждое устройство свой поток, потому что когда добавляешь девайс, прибавляется тред. Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: ufna от Ноябрь 18, 2010, 17:09 а что за устройство и как может быть опрошено?
Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: pethead от Ноябрь 18, 2010, 17:20 какая разница. ну snmp.
Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: alexman от Ноябрь 18, 2010, 17:25 На каждое устройство по потоку больно жирно будет! Можно попробовать, чтобы один поток отвечал за группу устройств.
Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: pethead от Ноябрь 18, 2010, 17:44 вот такой пример создает 5000 тредов. легко. :)
Код: #include <stdio.h> собирать так: g++ -o threadtest -lpthread main.cpp Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: ufna от Ноябрь 18, 2010, 18:54 какая разница. ну snmp. Разница есть. А snmp - оно вообще протокол ) Если snmp-устройства, то проще группировать по определенным признакам, и поток будет отвечать за группу. Сколько времени уходит на опрос устройства? Насколько критично соблюдение времени раз в секунду - т.е. может быть раз в 0.9 или раз в 1.2 секунды, с колебаниями? 5000 тредов, даже если можно сделать - все равно есть зло. Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: pethead от Ноябрь 18, 2010, 19:00 вы спрашивали как может быть опрошено я ответил snmp. что это за протокол к проблеме не имеет значения.
группировать никак не получается - да и опрос в одном потоке нескольких девайсов , а если с ним последовательная связь по slip и каналу в 4бита в сек? остальные курят. мозготрах еще тот. а как же ооп? Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: Igors от Ноябрь 18, 2010, 19:47 Запускаете заданное число ниток (обычно = числу ядер). Складываете запросы в контейнер/очередь. Нитки выбирают из очереди запросы и обрабатывают их. В данном случае логично выглядит: нитка, опросив устройство, знает когда будет нужен следующий опрос - ну пусть она сохранит это время в данных нового запроса и положит его в очередь.
Синхронизация: все рабочие нитки ждут на семафоре. Одна специальная нитка в цикле проверяет есть ли в очереди запрос который пора обработать и если да - открывает семафор. Возможны и др. решения, это просто пример Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: pethead от Ноябрь 18, 2010, 20:00 в умл уже накидали примерную картину запросов и очередей. рук-ль проекта морщится...
виды опросов разные: есть быстрые - запрос\ответ, есть долгие - запрос\ждем\ответ если тот еще запрос\ждем\ответ. класс устройство должен положить запрос в очередь и ждать обработки т.е тоже цикл ожидания, но в главном потоке? Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: Igors от Ноябрь 18, 2010, 20:22 в умл уже накидали примерную картину запросов и очередей. рук-ль проекта морщится... "Ждем" не проходит. Если ответ не мнгновенный, в очередь помещается новая задача (которая может быть обработана др. ниткой)виды опросов разные: есть быстрые - запрос\ответ, есть долгие - запрос\ждем\ответ если тот еще запрос\ждем\ответ. класс устройство должен положить запрос в очередь и ждать обработки т.е тоже цикл ожидания, но в главном потоке? Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: ufna от Ноябрь 18, 2010, 22:41 pethead,
Как вариант - послушайте Игоря. Группировать можно, и подходы можно использовать различные. Подумайте как работают сервера игрушек на десятки тысяч пользователей? Мозготрах - да, но Вам нужен результат или "просто"? Название: Re: многопоточное приложение опроса на 5000 устройств Отправлено: pethead от Ноябрь 19, 2010, 05:41 всем спасибо, в след. раз как сделаем напишу как получилось.
надо и просто и быстро... |