У меня есть игра, в которой пользователи связываются с сервером, чтобы найти пользователя своего уровня, который хочет поиграть в игру. Вот базовая архитектура игрового запроса.
Я использую ndb
для хранения очереди ожидания для каждого уровня пользователя в Google DataStore.
Я получаю доступ к этим очередям по их ключам, чтобы обеспечить надежную согласованность (согласно эта статья). Сущности хранятся в очереди с использованием повторяющегося (списка) LocalStructuredProperty.
Вопросов:
- Сущность удаляется из очереди ожидания, поскольку она соответствует запросу. Транзакция зафиксирована, но еще не применена. Этот же объект сопоставляется с другим запросом и удаляется. Это вызовет ошибку?
- Эти строго согласованные доступы ограничены ~ 1 записью в секунду. Есть ли лучшая архитектура, которая устранит это ограничение?
Одна вещь, которую я рассмотрел в ответ на последний вопрос, - это поддерживать несколько очередей (число которых растет и сокращается с увеличением спроса).