PDA

Просмотр полной версии : Не совсем понятна реализация многопользовательского приложения


Arbis
15.04.2010, 07:02
Доброй ночи :)
Решил попробовать сделать многопользовательское приложение на флеш.
Почитал на сайтах. Как я понял флеш по большому счету только графическая оболочка, на стороне клиента, а все операции выполняются на сервере. Впринципе с одной стороны ничего сложного, но с другой не пойму одной вещи. К примеру пользователи ищут 10 отличий на картинке, "кто первый нашел тот и молодец".
Пользователь тыркнул в отличие - серверу отправился запрос, в базе его счетчик увеличился на 1.
Как об этом узнает второй пользователь - если мну правильно понимает то он должен делать постоянно запросы в базу и проверять не увеличился ли счетчик первого.
Вот тут в мой мозг и забираются смутные сомнения... пусть по 3 запроса в секунду, если в онлайне 1000 пользователей это 3000 запросов. И вот собссно сам вопрос: А выдержит ли сервер? Или я что-то не правильно понимаю :o

Juice_Green
15.04.2010, 10:43
варианта два,
первый - реализовать на сокетах, тогда "вторые пользователи" будут узнавать это почти мгновенно
второй - каждый пользователь будет посылать покеты серверу на предмет отгадывания предметов другими, но сами понимаете что такие пакеты нужно слать очень приочень часто,
так что реализуйте сокет сервер и будет вам счастье

iflamberg
15.04.2010, 11:28
Ну чуть раскрою про сокеты. Сокет-соединение означает, что между клиентом и сервером постоянно висит открытый канал. Когда от одного из клиентов приходит "я тыкнул", то сервер должен отослать всем сообщения "он тыкнул" и "он попал"/"он не попал".

Если не на сокетах делать, то это - с помощью http-запросов. Тогда это выглядит примерно так: клиент - серверу: "ну, кто там тыкнул?". Сервер-клиенту: "за время вашего отсутствия тыкнул этот, этот и этот. Этот отгадал."
Такой способ намного медленнее.
А насчет выдержит сервер - это зависит от реализации. При реализации "запросами", просто обычно используют пхп или перл и это влияет на производительность (+ веб-сервер организует передачу данных и жрет ресурсы). Если сделать сокет-сервер на пхп, то он тоже не справится с 1000 пользователей.

Arbis
15.04.2010, 16:31
Juice_Green, iflamberg спасибо :)
Если сделать сокет-сервер на пхп, то он тоже не справится с 1000 пользователей. Лучше на Яве?

etc
15.04.2010, 18:43
Juice_Green, iflamberg спасибо :)
Лучше на Яве?

Лучше на си.

Dimitry_II
16.04.2010, 12:49
С недавних пор это уже стало спорным вопросом.

incoob
16.04.2010, 15:39
С недавних пор это уже стало спорным вопросом.
Можно поподробнее?

Nirth
16.04.2010, 15:56
Если не использовать J2EE и вообще не усердствовать с фреймворками, то скорость Java во многом догоняет C, но опять же – не надо переусердствовать с подключаемыми фреймворками.

Если сервер будет оперировать с кучей листов, деревьев и тд – То лучший выбор это Erlang или Scala. Вообще функциональные языки, лучше ООП и Процедурных справляются с обработкой данных.

Если сервер будет скалироватся, и должен подерживать тысячи юзерей, опять же мой выбор бы пал на Erlang, Scala, Haskell, а не C/C++.

C/C++ оптимальный выбор, когда фиг поймет, что вообще требуется.

Arbis
18.04.2010, 02:41
Ну C/C++ мне как то ближе. Ибо ни Erlang, ни Scala, ни Haskell я в упор не знаю :D Большое спасибо за ответы