В настоящее время я работаю над карточной онлайн-игрой, похожей на блэкджек, которая будет состоять из серии столов, где на каждом столе есть «дилер» и несколько игроков-людей. Дилер (компьютерный бот) отвечает за раздачу и тасование карт. Таблицы будут храниться в таблице базы данных PostgreSQL, и администратор сможет добавлять / удалять / редактировать таблицы.
Игра будет состоять из веб-интерфейса и серверной части REST / websocket API. Я, вероятно, буду использовать Kubernetes и Nginx в качестве балансировщика нагрузки для внутренних серверов.
На мой вопрос. Скажем, у меня есть один сервер, я мог бы просто заставить его читать список таблиц из базы данных и запускать процесс / поток дилера для каждой таблицы. Однако, если у меня есть 2 или более серверов, все становится более беспорядочным.
Как обеспечить сбалансированное назначение таблиц на всех серверах (например, если имеется 10 таблиц и 3 сервера, распределение должно быть примерно 3–3–4)?
Как я могу гарантировать, что в случае отказа сервера его таблицы будут переназначены действующему серверу?
Как убедиться, что при подключении нового сервера к сети некоторые существующие таблицы переназначаются ему, чтобы снизить нагрузку на другие серверы?