Обслуживать несколько стран?
Я запускаю игровой сервер на машине с Linux, а один IP-адрес маскируется прокси. Коробка расположена в центре обработки данных Лос-Анджелеса, и для игроков в некоторых других странах они испытывают высокий пинг по сравнению с игроками из США.
Можно ли разместить сервер в одном месте, но предоставить такой же опыт игрокам в других странах?
Как au.example.com, us.example.com, eu.example.com.
Это возможно? Я бы хотел 1 экземпляр сервера, а не несколько экземпляров по всему миру (это снизило бы количество проигрывателей на сервер).
1 ответ
Ну, проблема, как предлагает один из комментаторов, в физике.
Например, длина одного из подводных кабелей от США до Австралии составляет около 12500 км. Данные должны пройти этот путь дважды, что составляет 25000 км. И это только кабель. Вам придется добавить больше для волокон в США и Австралии.
Типичное одномодовое волокно имеет показатель преломления около 1,444 (свет распространяется в 1,444 раза медленнее, чем в вакууме).
25000 км / (c / 1.444) ~ 120 мс
Это самое короткое время отклика, которое вы можете получить, если ваш сервер был напрямую подключен к американскому концу кабеля, а клиент был напрямую подключен к австралийскому концу. В большинстве случаев имеется больше соединений на обоих концах и несколько маршрутизаторов, которые также увеличивают задержку.
Более того, ссылки предназначены не только для вашей игры, поэтому на большинстве маршрутизаторов есть буферы, которые добавляют дополнительные задержки (различающиеся по длине).
И не начинайте меня с того, как данные могут перемещаться, если условия не идеальны (в основном из-за перебоев). Затем данные могут перемещаться из Лос-Анджелеса в Нью-Йорк, Сан-Франциско, Токио, Нью-Дели, Сидней (только пример). И чем дольше вы пытаетесь достичь, тем больше вероятность того, что эти проблемы произойдут, и тем более явными они станут.
Я ожидаю, что игра, о которой вы говорите, представляет собой некий опыт RealTime (именно поэтому вы хотите улучшить задержки в сети), вряд ли возможно использовать какой-либо прокси или CDN, чтобы снизить задержки клиентов.
Вы можете использовать виртуальный / облачный хостинг для запуска небольших экземпляров в местах, где нагрузка не очень высокая. Переход на выделенные серверы / оборудование после увеличения базы игроков.
Если мое предположение о том, что предмет в реальном времени неверен, обновите ваши вопросы, указав детали того, что это за тип / тип игры, как она работает или, еще лучше, название игры. (кстати. Вы автор игры - можете ли вы изменить игру - или просто запустить сервер?)