PDA

Просмотр полной версии : [FaceBook] бэкенд для realtime многопользовательской игры


undefined
17.03.2016, 19:39
требуется сделать realtime игру для fb один на один.Пока обдумываем варианты сервера.Т.к. наш хостер сразу говорит:
"8.4.Категорически запрещается установка на сервер любого программного обеспечения, не имеющего прямого отношения к виртуальному хостингу (к разряду такого программного обеспечения можно отнести прокси-серверы, socks-серверы, irc-серверы и irc-боты, серверы мгновенных сообщений и т.п.), а также любое программное обеспечение, функционирование которого затрагивает интересы других пользователей."
Т.е. сокеты отпадают.Поэтому рассматриваем следующие варианты:
1)Вообще без сервера, через п2п.Но оно не шибко надежно,плюс с натом не дружит.
2)Использовать что-то типа IRC.
3)Делать эмуляцию сокетов через хттп( с помощью периодических пингов сервера),но тут нагрузка слишком большая.
Какие еще могут быть варианты?
Может у самого фб что-нибудь есть для этого?На айосе есть, например, GameCenter.

caseyryan
17.03.2016, 19:59
Серег, а где ты тут увидел, что сокеты нельзя? socks серверы это совсем не то (https://ru.wikipedia.org/wiki/SOCKS)
Я бы на вашем месте послал этого хостера куда подальше (если он действительно запретит простые сокеты), и перешел на другого. В reg.ru ничего не запрещают, много раз пользовался (в том числе и для сокет сервера) и полностью доволен. Ну это как пример, есть и другие хорошие хостеры.

undefined
17.03.2016, 20:24
ну не знаю.Наш серверщик сказал следующее:

я:ну и сокет-сервер не указан
серверщик:А он попадает в категорию.
прокси-серверы и socks-серверы.
я:а какое отношение прокси-сервер имеет к сокетам?
серверщик:Самое прямое. Он и будет прокси-сервером между 2-мя клиентами.

Переезжать мы как раз и планируем на AWS (https://aws.amazon.com/ru/).Но там засада т.к. балансировщик у них, походу, умеет только в http.

caseyryan
17.03.2016, 20:51
:Самое прямое. Он и будет прокси-сервером между 2-мя клиентами.
Он фигню какую-то говорит. Вообще, что мешает написать/позвонить хостеру, и спросить напрямую будет ли ваш сервер подпадать под запрещенную категорию, если он будет выполнять такие-то задачи?
Я бы не стал себя ставить в какие-то рамки и искать какие-то лазейки для такой стандартной задачи, только лишь потому, что хостер со странностями. Это, как бы, в интересах хостера, чтобы я остался на нем и платил им бабло за хостинг. Не хотят, не надо. Сейчас это не проблема. Они только потеряют от своих тупых запретов.
Но там засада т.к. балансировщик у них, походу, умеет только в http.
Кто такой балансировщик? Что он делает там? И что за баланс вообще в http?

undefined
17.03.2016, 21:37
балансировщик нагрузки между разными нодами с апачем.У нас первичная цель переезда - возможность в случае надобности без лишней головной боли нарастить мощность за счет введения новых нод.

bifidokk
18.03.2016, 07:34
Может легче сразу сменить хостинг или арендовать выделенный сервер, тем более на фб хорошо трафик идет, нагрузка хорошей будет.

Может у самого фб что-нибудь есть для этого?На айосе есть, например, GameCenter.
требуется сделать realtime игру для fb один на один

что-то не понял, вам нужен rt или просто результаты боевки куда-то писать?

балансировщик нагрузки между разными нодами с апачем
советую переехать на nginx

undefined
18.03.2016, 12:36
что-то не понял, вам нужен rt или просто результаты боевки куда-то писать?
GC - это не только лидерборд, но и еще rt обмен между игроками + поиск напарника.А лидерборд у нас как раз самописный.
советую переехать на nginx

а он умеет в php? За счет чего происходит балансировка?В случае амазона, например, включение новой ноды эквивалентно появлению новой машины с апачем, которая берет на себя часть нагрузки.Очень удобно стало тесно - расширил себе макс. число нод и делов. Вопрос чисто финансовый.

bifidokk
19.03.2016, 09:36
а он умеет в php?
конечно, http://help.ubuntu.ru/wiki/nginx-phpfpm
Мы после апача на него перепрыгнули, производительность ощутимо увеличилась. Почитай сравнения nginx и апача

Ну и по балансировке в интернетах куча статей

undefined
19.03.2016, 12:20
Мы после апача на него перепрыгнули, производительность ощутимо увеличилась. Почитай сравнения nginx и апача
А за счет чего прирост производитеьлности если php там выполняет все тот же апач?
Поэтому, он часто применяется в связке с внутренним (back-end) сервером для обработки динамических данных которые потом отдаются «Nginx» как статические без участия внутреннего сервера. В качестве внутреннего сервера может применяться «Apache2» или, что и рассматривается в данной статье, «PHP-FPM».

caseyryan
19.03.2016, 13:01
Ты читал сравнение? https://habrahabr.ru/post/267721/

undefined
19.03.2016, 14:21
я правильно понимаю, что основной прирост получается при запросах статического контента?Но у нас весь контент лежит вне папки www и выдается через php скрипт.

bifidokk
19.03.2016, 20:28
А за счет чего прирост производитеьлности если php там выполняет все тот же апач?
шта? почитай про архитектуру каждого сервера.
ты можешь использовать nginx в связке с апачем. nginx для выдачи статики, а апач для обработки запросов. но можешь полностью юзать nginx, т.к. он не просто для выдачи статики, а в принципе для многого.
по сути в nginx динамку обрабатывает php-fpm

выше кинули ссылку https://habrahabr.ru/post/267721/
посмотри комменты

Добавлено через 5 минут
и да, статику (изображения, флешку, различные модельки) мы вообще держим на отдельном cdn, т.к. незачем серверу, на котором выполняется игровая логика, напрягаться, выдавая изображения.

undefined
19.03.2016, 21:06
и да, статику (изображения, флешку, различные модельки) мы вообще держим на отдельном cdn, т.к. незачем серверу, на котором выполняется игровая логика, напрягаться, выдавая изображения.
Ну т.е. у вас статики тоже нет.Nginx получается висит мертвым грузом?И повторю еще раз вопрос- каким образом nginx балансирует нагрузку?У амазона все просто: в случае надобности подключаются новые ноды.А тут как?

bifidokk
19.03.2016, 21:32
Ну т.е. у вас статики тоже нет.Nginx получается висит мертвым грузом?
Ты, похоже, прочитать по ссылкам не хочешь. Nginx он не только для статики. Я, собственно, в полемику и в доказательства лезть не хочу, т.к. достаточно почитать и понять, что и как, поэтому объяснять и расписывать тут не вижу смысла, я просто посоветовал обратить внимание на nginx

undefined
19.03.2016, 21:59
Ну пишут же прямым текстом
Nginx не имеет возможности самостоятельно обрабатывать запросы к динамическому контенту. Для обработки запросов к PHP или другому динамическому контенту Nginx должен передать запрос внешнему процессору для исполнения, подождать пока ответ будет сгенерирован и получить его. Затем результат может быть отправлен клиенту.