Как веб -серверы и игровые серверы соединены вместе?
1. Есть много типов игр, давайте сначала посмотрим на MMORPG.
Независимо от того, насколько прост сервер RPG, неизбежно иметь дело с многопользовательскими взаимодействиями. В том же сценарии сотни людей должны получать информацию о операции от всех остальных.
Во -вторых, операции пользователей очень часты, а общие серверы имеют тенденцию держать длинные соединения. Более того, эти ссылки часто взаимодействуют и не имеют очевидных стратегий постоянных разделов, поэтому они ограничивают горизонтальное масштабирование сервера. Тот же сценарий часто можно запускать только на одной физической машине.
Опять же, игры для ПК обычно не осмеливаются помещать логические операции на клиент. Пользователи взломают его за несколько минут, меняют золотые монеты и чистите два куска оборудования. Следовательно, этот сервер карт должен проверить операции всех игроков на карте и рассчитать серию бизнес -логики, такую как Monster AI и скорость падения.
Мы видим, что традиционные игровые серверы, очевидно, отличаются от веб -серверов, с уникальными потребностями бизнеса, такими как длинные связи, несколько трансляций, сложная бизнес -логика и стратегии ограниченного разделения.
2. Давайте посмотрим на преимущества параллелизма на игровой сервер.
Параллелизм на самом деле является логическим процессом программы, и он не требует многоядерной физической поддержки. Общее значение состоит в том, чтобы сделать несколько независимых логических потоков, как будто они работают одновременно. Соглашение операционной системы-это многопроцессорная многопоточная модель. Пусть ОС обрабатывает часы, блокирование ввода -вывода и другие проблемы.
Для сервера, если большая часть задачи потрачена на ввод/вывод, механизм параллелизма может предотвратить заблокирование всей службы карты с помощью доступа ввода -вывода. Когда задача заблокирована, распределите запасные вычислительные ресурсы на другие задачи. В этом случае параллелизм полезен для эффективности работы сервера и времени отклика.
Для программистов независимый логический поток означает, что они могут выполнить свои задачи в надежном, простом, слабо связанном контексте.
Поскольку логический переключатель между обработчиками ОС должен быть неоднократно застрять в ядре, некоторые люди думают, что это слишком медленно, поэтому они делают некоторые потоки в пространстве пользователя и сами управляют несколькими логическими потоками в процессе. Из -за ограничений возможностей описания языка слишком трудно писать и использовать такие вещи на C/C ++. Таким образом, сахар -сахар Coroutine в Erlang, Go, Луа генерируется.
Node.js по существу управляет несколькими логическими потоками сам по себе, но этот логический поток распределен на основе состояния ввода/вывода и имеет приоритет. В фактической реализации он пытается использовать не блокирующую асинхронную ввод-вывода. Когда одна задача вызывает ввод -вывод, я останавливаю его и жду, пока сигнал ввода/вывода не будет отправлен, я перезагружаю его.
Обратите внимание на это, каждый раз, когда я запускаю задачу, и я не буду активно переключаться на другие потоки программ, пока она не завершится, или произойдет вызов ввода -вывода. Так что, если эта задача включает в себя слишком много вычислений, весь процесс карты будет заблокирован здесь.
И поскольку node.js является асинхронным, необходимо постоянно писать обратные вызовы, чтобы слушать сигналы, завершенные вводом/выводом. Логический поток одной задачи будет прерван несколько раз. Когда задача станет довольно сложной, так называемый адский ад Callbak вызовет большие проблемы для отладки и развития.
3. Из-за вышеуказанных причин я не рекомендую использовать node.js в непрототипной разработке сервера MMORPG.
4. Сервер мобильных игр, который появился в последнее время, вполне подходит для Node.js, поскольку мобильные игры ограничены проблемами сети , а сервер может проверять только ключевые данные, и невозможно справиться с ситуациями, когда взаимодействуют несколько человек. Серверная сторона была упрощена настолько, что она ничем не отличается от веб -сервера. Бизнес -логика также проста, обрабатывает данные, а затем сохраняется.