AWS: хранение и анализ архитектуры игровых данных (эластичная, или афина, или кинезис)
моя компания создает игру, похожую на Archero, а я всего лишь бэкэнд-разработчик.
Я реализовал систему, управляемую событиями, в которой я могу повторно использовать код между Unity и сервером (оба - .net). Я также хочу анализировать данные, которые мы получили в результате этих событий.
Я использую общие библиотеки классов с именем GameEngine. Эти библиотеки отвечают за ChangeSets.
Когда игрок обновляет предмет или завершает главу, игровой движок применяет ChangeSet к пользователю. (UserChangeSet, EventChangeSet,StoreChangeSet и т. Д.)
Когда пользователь входит в систему, я отправляю наборы изменений на сервер, и сервер также обрабатывает наборы изменений один за другим, используя один и тот же код, что приводит к тому же пользователю.
Моя текущая многорегиональная архитектура включает: Route53 + AGW + LAMBDA + DYNAMODB + конвейеры в нескольких регионах с использованием terraform. Все сделано.
Теперь я хочу проанализировать данные, полученные из этих наборов изменений.
Я думал, что будет нормально, если я использую rds, но вставка в 3 разные таблицы в лямбдах добавляет задержку в 500 мс даже без индексов и пустого db.
После небольшого поиска это мои новые идеи;
Отправьте данные в AWS Kinesis из лямбда-выражений, затем отправьте в S3, затем проанализируйте с помощью AWS AthenaSQS, затем S3, затем ATHENA ИЛИ Lambda, затем эластичный поиск
Я хочу запросить, например, количество пользователей, которые обновили ЭЛЕМЕНТ X в 10 наборах изменений.
public class InventoryChangeSet:ChangeSet
{
public IEnumerable<Tuple<string, int>> ScrollWithCount;
public string ItemId ;
public string UserId;
public ItemChangeType ItemChangeType ;
public InventoryChangeSet()
{
}
}