#ios #amazon-web-services #aws-lambda
#iOS #amazon-веб-сервисы #aws-lambda
Вопрос:
Я пытаюсь создать приложение, в котором пользователи отправляют JSON из своего географического местоположения на сервер, а сервер собирает все запросы из этого местоположения в течение 5 секунд с момента первого запроса, отправленного из этого местоположения. Я хочу сохранить все запросы в hashmap, где key — это LocationKey, а значение — список всех запросов из этого местоположения. У меня возникли проблемы с его моделированием в aws lambda, поскольку это только вызовы api, поэтому сложно концептуализировать кодирование приложения, основанного на времени. Также я не уверен, где мне хранить хэш-карту. Я новичок в разработке серверной части, и любая помощь будет высоко оценена.
Связь между приложением и сервером выглядит следующим образом:
На мобильном устройстве пользователя:
- Создайте JSON с {LocationKey, username, otherinfo .. } .
- Отправьте этот JSON на сервер.
Сервер:
-
Если LocationKey не существует в hashmap -> (1) Создайте новое значение hashmap
< Ключ: LocationKey, значение: < < Request1 > > >
(2) Запустите таймер -
Если LocationKey существует в хэш-карте, а срок действия таймера не истек, добавьте запросы в хэш-карту на основе LocationKey
< Ключ: LocationKey, значение: < < Запрос1 >, < Запрос2 > > > -
Если таймер закончился
(1) Возвращайте значение hashmap для каждого запроса в hashmap
(2) Удалите запись hashmap
Буду признателен за любую помощь!!
Ответ №1:
Вам придется хранить данные где-то за пределами Lambda и просматривать их при каждом вызове Lambda. Я думаю, что хранение данных в DynamoDB будет хорошо работать для вашего сценария.
Комментарии:
1. Согласен. Каждый вызов Lambda может сохранять данные в DynamoDB, ждать 5 секунд, считывать из DynamoDB, а затем возвращать ответ. Вместо того, чтобы концептуализировать «сервер», думайте об этом как о каждом пользователе, вызывающем независимую «задачу», которая использует DynamoDB для связи между задачами. Вместо удаления данных из DynamoDB просто игнорируйте то, что старше требуемого времени, тем самым устраняя фазу «очистки». Подумайте о масштабе!