Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А сколько сокетов может быть? Колличество Socket одновременно на серве 
V
    Опции темы
KOp4iK
Дата 31.8.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



День добрый!
Есть сервер и куча клиентов. Которым не просто надо взаимодействовать, а взаимодействовать одновременно(ну почти smile ).
Ну и собственно 2 вопросса:
1. А правильно ли изначально много (в моём понимании >1000) клиентов делать через сокет? Нееее не вдруг есть другие варианты...

2. Что-то у меня такая подозряна что одновременно сервер не вынесет столько сокетов... Где-то я слышал что можно не держать их(сокеты) постоянно вот только если их не держать постоянно не слошком ли дорого будет создавать ЦЕЛЫЙ сокет для одного сообщения? И вообще где можно про это почитать а то серч как-то немомогает smile 

Зарание спасибо!

ЗЫ Как пример может служить схема чата(много клиентов и большой поток информации), но ко всему этому на сервере идут большие вычисления...
ЗЗЫ Был бы очень признателен еслиб вы поделились опытом реально работающих подобных системну... хотяб сколько реально коннектов одновременно и что за железо

Это сообщение отредактировал(а) KOp4iK - 31.8.2006, 17:58
PM MAIL   Вверх
LSD
Дата 31.8.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



1. А как иначе, если взаимодействие через сеть и все клиенты соединяются с разных компьютеров?

2. Количество соединений не так критично, как количество данных передаваемых через них.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
KOp4iK
Дата 1.9.2006, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



Цитата

1. А как иначе, если взаимодействие через сеть и все клиенты соединяются с разных компьютеров?   

яж говорю 
Цитата

Нееее не вдруг есть другие варианты...  smile 


Цитата

2. Количество соединений не так критично, как количество данных передаваемых через них. 

т.е. если 1000 ... 2000 человек будут весеть онлайн и посылать/получать раз в минуту по байтику то всё будет летать?!?!? Если честно то слабо вериться ... не ну я всё понимаю но тыща - две коннектов ЭТОЖЕ МНОГО!!! smile 

И тогда сразу вопрос напрашиваеться: А что можно сделать если и клиентов много и данных все посылают много???
PM MAIL   Вверх
LSD
Дата 1.9.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(KOp4iK @  1.9.2006,  10:55 Найти цитируемый пост)
т.е. если 1000 ... 2000 человек будут весеть онлайн и посылать/получать раз в минуту по байтику то всё будет летать?!?!?

Попробуй.

Цитата(KOp4iK @  1.9.2006,  10:55 Найти цитируемый пост)
И тогда сразу вопрос напрашиваеться: А что можно сделать если и клиентов много и данных все посылают много???

Оптимизировать smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
KOp4iK
Дата 1.9.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



Цитата

Цитата(KOp4iK @  1.9.2006,  10:55 ) 
т.е. если 1000 ... 2000 человек будут весеть онлайн и посылать/получать раз в минуту по байтику то всё будет летать?!?!? 

Попробуй.


А как пробовать-то на одной машине?!??!!? Это читерство!!! А на разных - где я столько возьму?!?!?

Цитата

Цитата(KOp4iK @  1.9.2006,  10:55 ) 
И тогда сразу вопрос напрашиваеться: А что можно сделать если и клиентов много и данных все посылают много??? 

Оптимизировать 


только КАК? Вы не подумайте ях не прошу за меня код писать ... просто никаких мыслей на тему оптимизирования нет smile
PM MAIL   Вверх
skhilkov
Дата 1.9.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 371
Регистрация: 11.4.2006
Где: TOMSK

Репутация: нет
Всего: 7



По-моему в случае чата 1000 - 2000 клиентов не критично, а вот если они файло тянуть будут или заливать(еще и одновременно..  smile ), тогда конечно что-то надо делать с оптимизацией, но это уже от задачи зависит...


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
COVD2
Дата 1.9.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 10.6.2006

Репутация: нет
Всего: 1



анекдот помните? "Что же вы Родион старушку за десять копеек? Не скажите, десять старушек - уже рубль." Самая простая оптимизация - добавить сервер.  smile 
PM MAIL   Вверх
KOp4iK
Дата 1.9.2006, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



Цитата

 а вот если они файло тянуть будут или заливать(еще и одновременно..   ), 

нее так всё брутально не будет... говорюж: чат + вычисления

Цитата

Самая простая оптимизация - добавить сервер.  

как учит нас теория при сложности алгоритма O^3 - добавлялка сломаеться... да и хоцца как раз узнать при одной среднестатистической машине(3Ghz 1GB) что можно ожидать! smile 
PM MAIL   Вверх
LSD
Дата 4.9.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(KOp4iK @  1.9.2006,  14:12 Найти цитируемый пост)
А как пробовать-то на одной машине?!??!!? Это читерство!!! А на разных - где я столько возьму?!?!?

Достаточно один сервер и 2-3 машины которые будут имитировать клиентов.

Цитата(KOp4iK @  1.9.2006,  14:12 Найти цитируемый пост)
только КАК? Вы не подумайте ях не прошу за меня код писать ... просто никаких мыслей на тему оптимизирования нет

Будут проблемы с производительностью, будешь оптимизировать. И почитай O'Reilly - Java Network Programming.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Mayk
Дата 4.9.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(KOp4iK @  31.8.2006,  21:56 Найти цитируемый пост)
1. А правильно ли изначально много (в моём понимании >1000) клиентов делать через сокет? Нееее не вдруг есть другие варианты...

Цитата(LSD @  1.9.2006,  03:13 Найти цитируемый пост)
1. А как иначе, если взаимодействие через сеть и все клиенты соединяются с разных компьютеров?

Имхо лучше в данном варианте гуглить в сторону широковещательных и многоадресных передач. broadcast и multicast.  

Цитата(http://athena.vvsu.ru/net/book/mcast.html#8)

Групповая рассылка, по сравнению с индивидуальной, уменьшает нагрузку на сеть. Предположим, дейтаграмму следует отправить 500 получателям. Используя индивидуальную рассылку, отправитель должен сгенерировать 500 дейтаграмм, каждая из которых будет отправлена одному узлу. При мультикастинге отправитель создает одну дейтаграмму с групповым адресом назначения; по мере продвижения через сеть дейтаграмма будет дублироваться только на "развилках" маршрутов от отправителя к получателям. В лучшем случае - если таких развилок не будет, то есть, например, все получатели находятся в одной сети Ethernet, - экономия трафика будет 500-кратной. При этом сохраняются также вычислительные ресурсы промежуточных узлов.




Цитата(KOp4iK @  2.9.2006,  01:13 Найти цитируемый пост)
среднестатистической машине(3Ghz 1GB) что можно ожидать! 

Более чем наверняка зависит от ОСи. ЯВА скорее использует возможности ОС, чем читает/пишет с сетевой платы.


Кстати, в моём линуксе кол-во одновременно открытых файлов(вкл. сокеты) не превышает тысячу с лишним. А дальше идёт ой, который преобразуется в яве в TooManyFilesOpenedException, или около того.





Это сообщение отредактировал(а) Mayk - 4.9.2006, 15:53


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
LSD
Дата 4.9.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Mayk @  4.9.2006,  16:52 Найти цитируемый пост)
Имхо лучше в данном варианте гуглить в сторону широковещательных и многоадресных передач. broadcast и multicast.

1. в интернете широковещательные запросы не пройдут
2. UDP не гарантирует доставку
3. в какдом пакете придется передавать информацию, для аутентификации клиента
4. SSL к ним не прикрутишь

Как думаешь почему ни одна IM служба не использует UDP, а только TCP/IP?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
KOp4iK
Дата 4.9.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



Цитата

Будут проблемы с производительностью, будешь оптимизировать. И почитай O'Reilly - Java Network Programming.


За книгу пасиб однозначный!!! Будем искать и читать!!!

И всётаки не хоцца закрывать тему вдруг кто-нить ещё чё-нить придумает  smile 

Это сообщение отредактировал(а) KOp4iK - 4.9.2006, 20:23
PM MAIL   Вверх
Mayk
Дата 5.9.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: нет
Всего: 134



Цитата(LSD @  4.9.2006,  20:26 Найти цитируемый пост)

1. в интернете широковещательные запросы не пройдут
2. UDP не гарантирует доставку
3. в какдом пакете придется передавать информацию, для аутентификации клиента
4. SSL к ним не прикрутишь

1 решается использованием многоадресной передачей AFAICS
2-4 лежат на программере.

А теперь представим что нам надо передать 1 мегабайт информации каждому клиенту.
(1 мегабайт в 
Цитата(KOp4iK @  2.9.2006,  01:13 Найти цитируемый пост)
вычисления
х
не такая редкая и большая цифра.)
Всего клиентов 1000. 1000 * 1024 ~= гигабайт исходящего траффика. 


Цитата(LSD @  4.9.2006,  20:26 Найти цитируемый пост)
2. UDP не гарантирует доставку

Вот ещё вопрос - что быстрее и надежней - разобраться с UDP и multicast'ом и отпарвить пусть даже 10 метров при плохой связи, или отправить 1 гиг в сеть при идеальной связи по TCP?

Цитата(LSD @  4.9.2006,  20:26 Найти цитируемый пост)

Как думаешь почему ни одна IM служба не использует UDP, а только TCP/IP?

Перебор. Zephyr is a UDP-based protocol.




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
KOp4iK
Дата 5.9.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



ТАК по ходу топ начинаеться скатываться в оффтоп... Сорри но просто не заметил сразу Всем клиентам надо посылать разные данные... т.е. иногда данные будут одинаковые ... но в основном разные!!!
PM MAIL   Вверх
COVD2
Дата 5.9.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 10.6.2006

Репутация: нет
Всего: 1



Копчик, судя по всему вы хотите удивить мир новой сетевой игрой.  smile  А оффтоп от абстрактности вопросов smile. Виндоуз позволяет адресоваться приблизительно к 65000 портов. Приблизительно первая тысяча зарезервирована за системными портами. Значит остается 64 тыс. портов. Однако машина врядли сможет обслужить 64000 сокетов. А сколько сможет - зависит много от чего.

Это сообщение отредактировал(а) COVD2 - 5.9.2006, 17:14
PM MAIL   Вверх
LSD
Дата 6.9.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Mayk @  5.9.2006,  12:44 Найти цитируемый пост)
2-4 лежат на программере.

Создадим себе трудности, чтобы потом их героически преодолеть.
Проблемы с производительностью могут и не возникнуть, а вот гемморой с программированием гарантировано будет.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
val
Дата 7.9.2006, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



Хм... А зачем куча сокетов... Одного хватит, а вот потоков будет куча. Насколько мне не изменяет память в рамках Java, классическая архитектура сервера выглядит так:
Код

final int port = 1000; 
boolean goOnServerProcessing = true;
while(goOnServerProcessing) {
       ServerSocket serverSocket = new ServerSocket(port);
       Socket s = serverSocket .accept();
       new ClientConnectionThread(s);
}


На сервере придётся открыть на вход тысячный порт, а клиенты будут делать исходящие коннекты по этому самому порту.





Это сообщение отредактировал(а) val - 7.9.2006, 16:06


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
LSD
Дата 7.9.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



val тот код который ты привел создает новое соединение (и соответсвенно новый клиентский сокет), на каждом вызове accept().


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
chief39
Дата 7.9.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: нет
Всего: 77



Цитата(LSD @  7.9.2006,  17:23 Найти цитируемый пост)
val тот код который ты привел создает новое соединение (и соответсвенно новый клиентский сокет), на каждом вызове accept(). 

И займёт новый порт, выбранный и выделенный абсолютно прозрачно для данного  кода

Это сообщение отредактировал(а) chief39 - 7.9.2006, 17:40


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
val
Дата 7.9.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



Цитата

val тот код который ты привел создает новое соединение (и соответсвенно новый клиентский сокет), на каждом вызове accept(). 

И займёт новый порт, выбранный и выделенный абсолютно прозрачно для данного  кода


Согласен. 


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
Tony
Дата 12.9.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 1
Всего: 12



смотри в стороnу java nio.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
KOp4iK
Дата 13.9.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



Цитата

смотри в стороnу java nio. 


посмотрел...  smile  но этож стандартные Java классы... А у меня вопрос по архитектуре...
PM MAIL   Вверх
Tony
Дата 13.9.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 1
Всего: 12



Цитата(KOp4iK @ 13.9.2006,  11:15)
Цитата

смотри в стороnу java nio. 


посмотрел...  smile  но этож стандартные Java классы... А у меня вопрос по архитектуре...

Тебе надо написать сервер состоящий из одного Thread'a.И не надо не каких супер ви4еслителных мощностей.Ты просто их поставиш в о4ередь.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
KOp4iK
Дата 18.9.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



Цитата

Цитата(KOp4iK @ 13.9.2006,  11:15) 
Цитата 
смотри в стороnу java nio. 
посмотрел...    но этож стандартные Java классы... А у меня вопрос по архитектуре... 
Тебе надо написать сервер состоящий из одного Thread'a.И не надо не каких супер ви4еслителных мощностей.Ты просто их поставиш в о4ередь. 


неее в очередь это некошерно!!! тогда одно сообщение будет тормозить все остальные!
PM MAIL   Вверх
LSD
Дата 18.9.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(KOp4iK @  18.9.2006,  12:28 Найти цитируемый пост)
неее в очередь это некошерно!!! тогда одно сообщение будет тормозить все остальные!

Как я понял, он просто призывает не создавать по треду на каждого клиента. Создается пара тредов которые читают данные от клиенов, и кладут их в очередь на обработку. Пара тредов которые обрабатывают данные от клиентов и помещают результаты в очередь. И еще пара тредов рассылает данные клиентам, или даже первые два нагрузить подобной работой.
Просто для этого требуется неблокируемое чтение данных, но это в в io есть nio тут не обязательно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Tony
  Дата 19.9.2006, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 1
Всего: 12



Ну тогда 2 варианта решения.
1. Супер PC
2. O4ередь

Да коне4но код можно пошерстить на производителность.Но я думаю , 4то это повысет не зна4ительно её повысет.



--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
LSD
Дата 20.9.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



С чего такие странные выводы?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
KOp4iK
Дата 26.9.2006, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



Цитата(LSD @ 18.9.2006,  17:45)
Цитата(KOp4iK @  18.9.2006,  12:28 Найти цитируемый пост)
неее в очередь это некошерно!!! тогда одно сообщение будет тормозить все остальные!

Как я понял, он просто призывает не создавать по треду на каждого клиента. Создается пара тредов которые читают данные от клиенов, и кладут их в очередь на обработку. Пара тредов которые обрабатывают данные от клиентов и помещают результаты в очередь. И еще пара тредов рассылает данные клиентам, или даже первые два нагрузить подобной работой.
Просто для этого требуется неблокируемое чтение данных, но это в в io есть nio тут не обязательно.

 Если можно поподробнее или smile или как это правильно называеться... чтоб для поиска
PM MAIL   Вверх
COVD
Дата 26.9.2006, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 11
Всего: 43



Почитайте про Selector в nio. Он как раз придуман для неблокируемой работы с сокетами одним потоком. Кроме того, эффективность nio в возможности исключить двойное копирование данных благодаря allocateDirect .

Это сообщение отредактировал(а) COVD - 26.9.2006, 14:49
PM MAIL   Вверх
KOp4iK
Дата 16.10.2006, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 26.11.2004
Где: Латвия

Репутация: нет
Всего: 3



NIO рулит 
PM MAIL   Вверх
LexeY
Дата 16.10.2006, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 20.11.2005

Репутация: нет
Всего: нет



я делал чтото подобное правда трафик был маленький и вычисления тоже, если не ошибаюсь на примерно 1000 потоков сьедало около 100м оперативки
PM MAIL   Вверх
COVD
Дата 17.10.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 11
Всего: 43



1000 потоков - это не только память, но и время, расходуемое на переключение потоков. А NIO позволяет обойтись одним.

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

И еще одно печальное обстоятельство. Если сервер обслуживает клиентов через интернет, то найдутся клиенты, выходящие в интернет через прокси сервер. В крупных компаниях доступ в интернет организован как правило через прокси сервер. Пользователи из таких компаний представляют повышенный интерес для сервиса ("Нашими услугами пользуется Кока-Кола!" smile ) , но и доставляют много хлопот.  Как правило, они не могут создать прямое сокетное соединение. Единственным разрешенным протоколом связи для них является HTTP соединение на 80 порт. Поэтому кроме TCP/IP сокетного соединения (с НИО или без) необходимо иметь и канал связи по протоколу HTTP. А это несколько другая концепция. Конечно, есть попытки прикрутить НИО к сервлетам ( http://weblogs.java.net/blog/jfarcand/arch...ly_an_http.html ), но все же это не совсем распространенная практика. 

Поэтому сказать, что дело NIO живет и побеждает, можно с определенной натяжкой.
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.1650 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.