2016-07-15 4 views
0

В настоящее время я работаю над многопользовательской игрой, которая будет использовать две базы данных (MONGODB). Один для аутентификации (логин) и один, чтобы содержать все данные, относящиеся к игре. Что я сделал, так это отделить данные пользователя и игры. Таким образом, я смогу в будущем создавать микросервисы вокруг пользователя.Управление несколькими базами данных

Я немного не уверен в том, как обрабатывать/проверять действия базы данных конкретной игры. Когда я вхожу в мою игру, я выполняю POST-запрос моему отдыху api, который проверяет пользователя и возвращает некоторые данные.

Сама игра, однако, использует соединение сокетов TCP для обработки игрового процесса в реальном времени и будет сохранять данные о конкретной игре в базе данных на авторитетном сервере (вся логика игры выполняется на сервере). Как вы собираетесь связать данные в конкретной игре с конкретным пользователем, найденным в базе данных аутентификации?

+0

У пользователей есть идентификаторы, не так ли? Поэтому сохраните идентификатор пользователя. –

+0

Я не могу получить доступ к идентификатору, найденному в db аутентификации из конкретного игрового db, если я не отправлю его через клиент, а это значит, что клиент сможет изменить идентификатор или я ошибаюсь ?. – JSjuniorlad

+0

Сохраните его в защищенном от несанкционированного доступа формате. Как зашифрованные файлы cookie в браузерах. Ваш сервер auth генерирует данные auth, шифрует его открытым ключом игрового сервера и возвращается клиенту. Клиент отправляет это непрозрачное значение с каждым запросом. Игровой сервер расшифровывает его своим личным ключом и извлекает идентификатор пользователя. Или вы можете использовать симметричный крипто здесь, для скорости. –

ответ

0

Теоретически лучший вариант - не передавать данные, а уникальные идентификаторы (первичные ключи).

На практике вы не должны делить данные таким образом. Часть пользователя принадлежит к игре, другие части могут использоваться в разных играх. Я предполагаю, что именно поэтому вы отделили их.

Посмотрите на принцип DDD ограниченных контекстов и как вы должны/могли бы создавать отдельные службы таким образом. При этом, определяя ограниченные контексты, правильный способ - это самое сложное в SOA и/или микросервисах.

+0

Ну, да и нет. Я разделяю пользователя/игру, чтобы иметь возможность реализовать такие вещи, как профили пользователей, аутентификатор (для двухэтапной аутентификации) в мобильном приложении. Профиль пользователя должен быть разделен на несколько игр и микросервисов. Спасибо, что нашли время ответить. – JSjuniorlad

Смежные вопросы