В настоящее время я работаю над веб-MMORPG-игрой и хотел бы настроить стратегию масштабирования на основе Docker и DigitalOcean капель.
Однако мне интересно, как я мог это сделать:
Мой игровой сервер должен быть разделен на разные контейнеры Docker НО, каждый экземпляр игрового сервера должен действовать так, как если бы это был только один гигантский игровой сервер. Это означает, что каждая модификация, происходящая в одном (перемещение символов), также должна отражаться на всех других игровых серверах.
Я пытаюсь заставить это работать (по крайней мере концептуально), но не могу найти способ правильно синхронизировать все мои экземпляры. Должен ли я использовать только трансляцию событий только для мастера или есть альтернатива?
Мне было интересно то же самое о моей базе данных MySQL: так как каждый игровой сервер должен будет читать/писать из/в db, как бы я сделал его правильно масштабируемым, так как игра становится все больше и больше? Лучшее решение, о котором я мог думать, это сохранить базу данных на одном сервере, который будет очень.
Я понимаю, что это может быть легко, если всем игровым серверам не нужно "делиться" своим состоянием, но это в первую очередь считается так, что я могу быстро масштабироваться в случае внезапного всплеска активности.
(Там будут разные "глобальные" игровые серверы, такие как A, B, C... но каждый из этих глобальных игровых серверов должен быть за кулисами, состоящий из контейнеров-докеров-1-X, на которых запущен "настоящий" игровой сервер так что "глобальный" игровой сервер - это всего лишь концепция)