Re[7]: Нагруженный TCP сервер как и на чем реализовать
От: Pzz Россия https://github.com/alexpevzner
Дата: 16.02.12 13:56
Оценка:
Здравствуйте, stronciy77, Вы писали:

Pzz>>Это вопрос о постановке задачи: что делать, если данные поступают быстрее, чем клиенты успевают их потреблять?


S>Пробрасывать все данные которые не успел получить пользователь, то есть не получил лови следующий пакет ! ( К сожалению это единственных выход.)


Совершенно не обязательно это единственный выход.

Скорость поступления данных от чего зависит? Если данные летят с неограниченной скоростью (т.е., скорость определяется только скоростью рассылки), то при предложенном вами подходе только один, самый быстрый, клиент будет получать все данные. Остальным останется только зубами щелкать

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

S>Не создавать же для каждого пользователя пул сообщений и раздавать с него ? Тогда подтврждение получения будет потреблять еще больше ресурсов !


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

S>Вот такое ожидаемое поведение, что успел, то и получил


И что им делать, бедолагам, если данные с пропусками? Они хоть должны знать-то, что не все получили?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.