Я нахожусь в процессе создания карточной игры, и в настоящее время я пытаюсь выбрать лучший подход к масштабируемости. Моя первоначальная мысль - возможность масштабирования по горизонтали. Это привело меня к реализации socket.io и redis для распространения сообщений между экземплярами. Сейчас я пытаюсь выяснить, как разделить игровое состояние между экземплярами. Взять этот псевдокод, например:
class Game {
this.games = {};
async updateGameState = () => {
this.games[game_id] = {game: state}
persistState()
}
persistState = () => {
database.update(this.games[game_id])
}
}
Как мне go сохранять состояние игры в памяти, чтобы распространять игровое состояние между экземплярами, мой исходный код Мысль - это тоже Redis.
Судя по самым популярным онлайн-казино, в которых на данный момент в сети только около 10000 клиентов, я просто слишком обдумываю это? Должен ли я просто придерживаться вертикального масштабирования при необходимости?