Чи слід тримати сервер входу, окрім ігрового сервера?


15

Я думаю зробити сервер MMO, і я дивився на те, як інші ігри структурують свою мережу. Одна з речей, яку я помітив, це те, що завжди є сервер для входу, а потім ігровий сервер (и).

Я все ще вирішую, чи варто це робити, але хотів би спершу почути деякі думки. Які переваги цього мають, і як сервер входу спілкується з ігровим сервером для обробки входів?


1
Питання "Як досягається балансування навантаження в ММО?" може бути цікаво: gamedev.stackexchange.com/q/5956/450
Хендрік Бруммерманн

Відповіді:


15

Я вважаю, що це здебільшого спричинене тим, що вхід та обробка ігор логічно більш-менш незалежні, тому їх зазвичай тримають окремо для кращої розв’язки, легшого обслуговування та масштабованості. Їм не обов’язково проживати на різних фізичних серверах, вони можуть працювати так само добре, як і незалежні сервіси на одній машині. Якщо трафік зростає занадто великим, сервер входу можна легко перенести на іншу машину.

Крім того, сервери для входу є ймовірним вектором атаки, тому їх добре розділити з точки зору безпеки.

Внутрішньо різні серверні сервіси можуть використовувати звичайні сокети для зв'язку один з одним, будь то на одній машині або на іншій машині в кластері. Крім того, сервер бази даних міг би бути використаний для підтримки прапора "увійшов у систему" для кожного користувача.


Більшу частину часу я бачу такий прапор у геймсервері db та всередині db loginserver, тому сервер входу може перевіряти один одного і якщо logindb! = Gamerserverdb користувач виходить із системи.
daemonfire300

10

Одним з важливих аспектів розвитку ММО є досягнення масштабованості та забезпечення балансування навантаження.

Користувачі аутентифікації шляхом перевірки облікових даних, статусу заборони, підрахунку останніх невдалих реєстрацій тощо - це завдання, яке можна виконати, не знаючи нічого про логіку гри або дані гри. Тож перемістити це до власного кластерного сервера дуже просто.

Крім того, сервери для входу є добре відомим "входом" для клієнта, з яким можна зв’язатися. Після успішної аутентифікації вони можуть відправити клієнта на відповідний сервер кластеру ігрових серверів. Ця диспетчеризація може бути здійснена шляхом переадресації мережевого підключення до потрібного ігрового сервера або кажучи клієнту відкрити нове з'єднання з правильним ігровим сервером.

Вам слід подумати про скорочення вашої системи для розповсюдження на початку. Запустити кілька фрагментів на одному сервері дуже просто. Але досить складно розділити речі, розроблені як одна одиниця.


2

Як колишній програвач WoW, мій досвід полягав у тому, що сервер входу завжди був найслабшою ланкою ланцюга.

Світові сервери, як правило, були надзвичайно стабільними, навіть добре обробляли виняткове навантаження (наприклад, нові випуски розширення).

Але сервери для входу просто ніколи не справлялися настільки добре, і часто не працювали, хоча світові сервери були нормальними. (це означає, що якщо ви втратите зв'язок у рейді / підземеллі, ви не можете повернутися, але інші гравці чекають на вас!)

А тепер, коли система входу в WoW об'єднана в Battle.Net, Starcraft 2 може стати недоступною, коли WoW знаходиться під великим навантаженням (як це сталося за пару годин, коли запущено Cataclysm)

Тож якщо ви будуєте гру, яка матиме дуже велику кількість користувачів, масштабність та продуктивність системи входу теж дуже важливі.


1
Я думаю, що сервери входу є основною ціллю для нападів грубої сили на паролі, тому вони повинні мати можливість справлятись з невеликим навантаженням. Особливо, якщо гра настільки популярна, що зловмисники починають використовувати ботнети (щоб запобігти обмеженню швидкості на ip-адресу) на додаток до звичайного випадкового відгадування імен користувачів.
Гендрік Бруммерман

Невдача увійти та розмістити гравця у світ може мати декілька причин. Це можуть бути сервери для входу / база даних облікових записів. Але це може бути викликано не завантаженням даних про програвач із бази даних. Або через збій системи, яка здійснює диспетчеризацію гравців на світових серверах, серверах чату, ... Внутрішній брандмауер все ще може обробляти відомі з'єднання, але може не в змозі застосувати набір правил для вирішення нових підключень. Грати у гравця у світ набагато складніше, ніж взаємодіяти, коли ви знаходитесь всередині.
Гендрік Бруммерман
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.