Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.04.2010, 21:49
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 1  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
По умолчанию Поясните разницу IO/NIO (socket-сервер на java) для социального приложения

Разбирался сегодня с сокет-серверами, в итоге получилось два полностью рабочих макета чата, один NIO - на базе xSocket, очень простой и удобный (но с фреймворком), второй - IO, с использованием только собственных функций (описание вот тут: http://www.broculos.net/tutorials/ho...er/20080320/en).

Кстати, во втором случае мне понравилось, что сразу предусматривается два сервера, один для отдачи политик, другой - рабочий. Но вопрос не в этом.

Какой из подходов IO/NIO более правилен для сокет-сервера социального приложения? Или нет разницы? Допустим, планируется до 10.000 одновременных коннектов.

И еще где-то была информация про то, что фреймворки отрицательно сказываются на быстродействии. Что по поводу xSocket?

Старый 24.04.2010, 23:08
lowka вне форума Посмотреть профиль Отправить личное сообщение для lowka Найти все сообщения от lowka
  № 2  
Ответить с цитированием
lowka

Регистрация: Sep 2006
Сообщений: 256
Главное отличие: в NIO (New Input/Output) есть неблокирующие сокеты, а в io их нет. И использовать последние там, где предполагается большое число пользователей/соединений, получается невозможно в принципе.
__________________
:emocry:

Старый 25.04.2010, 00:07
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 3  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
То, что в IO нет неблокирующих сокетов, я понял и сам.
Вопрос был про то, как делать правильно.

Старый 25.04.2010, 15:51
maxlapshin вне форума Посмотреть профиль Отправить личное сообщение для maxlapshin Найти все сообщения от maxlapshin
  № 4  
Ответить с цитированием
maxlapshin
Erlyvideo

Регистрация: Aug 2008
Сообщений: 197
Отправить сообщение для maxlapshin с помощью ICQ
«В интернетах» гуляют сообщения о том, что NIO в Java работает чуть ли не медленнее, чем обычный IO. Технически скорее всего обе реализации выполнены неблокирующими сокетами, что бы не вешалась джава-машина.

С точки зрения API операционной системы обслуживание 10 тыс одновременных пользователей блокирующим IO практически невозможно*— слишком велики накладные расходы на работу ниток и процессов. Однако с точки зрения виртуальной машины, где каждая нитка гораздо дешевле чем нитка ОС и весь ввод-вывод итак неблокирующий, удобнее пользоваться блокирующим вводом-выводом*— не так сильно рвется бизнес-логика.

Старый 25.04.2010, 17:51
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 5  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Я, честно говоря, не совсем понимаю, где и как она рвется.

Старый 26.04.2010, 01:19
maxlapshin вне форума Посмотреть профиль Отправить личное сообщение для maxlapshin Найти все сообщения от maxlapshin
  № 6  
Ответить с цитированием
maxlapshin
Erlyvideo

Регистрация: Aug 2008
Сообщений: 197
Отправить сообщение для maxlapshin с помощью ICQ
При неблокирующем IO линейный код приходится распиливать на действие и коллбек ровно по операции ввода-вывода. Иначе это не неблокирующий ввод-вывод.

Старый 26.04.2010, 11:44
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 7  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Ну да, обычная событийная модель.
Весь флэш на этом стоит.

Но в целом я понял.
При блокирующем сокете у нас одна нить на одного клиента и остальные под ногами не путаются.

Старый 29.04.2010, 01:45
maxlapshin вне форума Посмотреть профиль Отправить личное сообщение для maxlapshin Найти все сообщения от maxlapshin
  № 8  
Ответить с цитированием
maxlapshin
Erlyvideo

Регистрация: Aug 2008
Сообщений: 197
Отправить сообщение для maxlapshin с помощью ICQ
Совершенно верно. Но важно понимать, что при блокирующем сокете одна нить ОС на клиента, а это безумно дорого. Базы данных с легкостью выделяют нитку под клиента, потому что клиентов они держат очень и очень мало.

А вот для веб-сервера это неприемлемо дорого.

Старый 05.05.2010, 21:22
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 9  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
Встретил ресурс тестирования NIO. Больше всего понравился отчет о соотношении коннектов к количеству процессов. Опытным путем пришли к выводу, что на 400-500 веб-коннектов приходится около 20 нитей процессов, то есть соотношение составляет около 1/20. Также наблюдается небольшое падение соотношения при росте коннектов.
Хочу заметить, что при 10 тыс. коннектов 500 параллельных процессов - это совсем не пиковая нагрузка.

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:19.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:19.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.