Я думаю о создании MMO-сервера и смотрю, как другие игры структурируют свою сеть. Одна из вещей, которые я заметил, это то, что всегда есть сервер логина, а затем игровой сервер.
Я все еще решаю, должен ли я сделать это, но я хотел бы сначала услышать некоторые мнения. Каковы преимущества этого, и как сервер входа в систему взаимодействует с игровым сервером для обработки входа в систему?
mmo
networking
server
scalability
JPiolho
источник
источник
Ответы:
Я полагаю, что это в основном обусловлено тем фактом, что логин и обработка игры логически более или менее независимы, поэтому они обычно хранятся отдельно для лучшей развязки, упрощения обслуживания и масштабируемости. Они не обязательно должны находиться на разных физических серверах, они могут работать так же, как и независимые сервисы на одной машине. Если трафик становится слишком большим, сервер входа в систему можно легко перенести на другую машину.
Кроме того, серверы входа являются вероятным вектором атаки, поэтому хорошо иметь их отдельно от точки зрения безопасности.
Внутренне различные серверные службы могут использовать обычные сокеты для связи друг с другом, будь то на одном компьютере или на другом компьютере в кластере. В качестве альтернативы, сервер базы данных может использоваться для поддержания флага «залогинен» для каждого пользователя.
источник
Одним из очень важных аспектов в разработке ММО является достижение масштабируемости и обеспечение балансировки нагрузки.
Аутентификация пользователей путем проверки учетных данных, статуса бана, подсчета недавних неудачных входов в систему и т. Д. - это задача, которую можно выполнить, не зная логики игры или игровых данных. Так что очень легко перенести это на свой собственный кластер серверов.
Кроме того, серверы входа являются хорошо известным «входом» для клиента, с которым можно связаться. После успешной аутентификации они могут отправить клиента на соответствующий сервер в кластере игровых серверов. Эту диспетчеризацию можно выполнить, перенаправив сетевое соединение на нужный игровой сервер или приказав клиенту открыть новое подключение к нужному игровому серверу.
Вы должны подумать о сокращениях вашей системы для распространения на ранней стадии. Очень легко запустить несколько штук на одном сервере. Но довольно сложно разделить вещи, которые были разработаны как единое целое.
источник
Как бывший игрок WoW, мой опыт заключался в том, что сервер входа всегда был самым слабым звеном в цепочке.
Мировые серверы обычно были впечатляюще стабильными, даже справляясь с исключительной нагрузкой (например, выпусками новых пакетов расширения).
Но серверы входа просто никогда не справлялись так хорошо, и часто бывали неработоспособны, пока мировые серверы были в порядке. (это означает, что если вы потеряете связь в рейде / подземелье, вы не сможете вернуться, но другие игроки ждут вас!)
И теперь, когда система входа в WoW объединена с Battle.Net, Starcraft 2 может стать недоступным, когда WoW находится под большой нагрузкой (как это произошло в течение пары часов при запуске Cataclysm).
Поэтому, если вы создаете игру, в которой будет очень много пользователей, очень важна масштабируемость и производительность системы входа в систему.
источник