Возможно ли приложение, основанное на времени, с помощью aws lambda?

#ios #amazon-web-services #aws-lambda

#iOS #amazon-веб-сервисы #aws-lambda

Вопрос:

Я пытаюсь создать приложение, в котором пользователи отправляют JSON из своего географического местоположения на сервер, а сервер собирает все запросы из этого местоположения в течение 5 секунд с момента первого запроса, отправленного из этого местоположения. Я хочу сохранить все запросы в hashmap, где key — это LocationKey, а значение — список всех запросов из этого местоположения. У меня возникли проблемы с его моделированием в aws lambda, поскольку это только вызовы api, поэтому сложно концептуализировать кодирование приложения, основанного на времени. Также я не уверен, где мне хранить хэш-карту. Я новичок в разработке серверной части, и любая помощь будет высоко оценена.

Связь между приложением и сервером выглядит следующим образом:

На мобильном устройстве пользователя:

  1. Создайте JSON с {LocationKey, username, otherinfo .. } .
  2. Отправьте этот JSON на сервер.

Сервер:

  1. Если LocationKey не существует в hashmap -> (1) Создайте новое значение hashmap
    < Ключ: LocationKey, значение: < < Request1 > > >
    (2) Запустите таймер

  2. Если LocationKey существует в хэш-карте, а срок действия таймера не истек, добавьте запросы в хэш-карту на основе LocationKey
    < Ключ: LocationKey, значение: < < Запрос1 >, < Запрос2 > > >

  3. Если таймер закончился

    (1) Возвращайте значение hashmap для каждого запроса в hashmap

    (2) Удалите запись hashmap

Буду признателен за любую помощь!!

Ответ №1:

Вам придется хранить данные где-то за пределами Lambda и просматривать их при каждом вызове Lambda. Я думаю, что хранение данных в DynamoDB будет хорошо работать для вашего сценария.

Комментарии:

1. Согласен. Каждый вызов Lambda может сохранять данные в DynamoDB, ждать 5 секунд, считывать из DynamoDB, а затем возвращать ответ. Вместо того, чтобы концептуализировать «сервер», думайте об этом как о каждом пользователе, вызывающем независимую «задачу», которая использует DynamoDB для связи между задачами. Вместо удаления данных из DynamoDB просто игнорируйте то, что старше требуемого времени, тем самым устраняя фазу «очистки». Подумайте о масштабе!