Подтвердить что ты не робот

Каким будет AWS, эквивалентный Firebase Realtime Database?

Сейчас я работаю над новым игровым проектом, который будет состоять из внешнего интерфейса React Native и внутреннего интерфейса на основе Lambda. Приложению требуются некоторые функции реального времени, такие как активные пользовательские записи, геозоны и т.д.

Я смотрел на базу данных Firebase Realtime Database, которая выглядит как действительно элегантное решение для синхронизации данных в реальном времени, но я не думаю, что в AWS есть что-то подобное.

3 варианта, которые я мог бы придумать для "безсерверного" реального времени с использованием только сервисов AWS:

Вариант 1. Обмен сообщениями IoT через веб-сокеты

Это совершенно очевидно, управляемое соединение WebSockets через IoT SDK. Я думал о том, чтобы запускать Lambdas в ответ на входящие и исходящие события и просто использовать WebSockets в качестве слоя реального времени, создавая пользовательскую логику обработки, как вы обычно делаете.

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

Плюсы:

  • Масштабируемое двунаправленное соединение в реальном времени

Минусы:

  • Работает только когда приложение открыто
  • Структура сообщения должна быть реализована
  • Управление несколькими транспортными уровнями

Вариант 2: повторная выборка, активируемая нажатием

Другой вариант - использовать push-уведомления в качестве триггеров в реальном времени, но использовать обычный HTTP-запрос к API-шлюзу, чтобы фактически получить обновленную полезную нагрузку.

Мне нравится этот подход, потому что он придерживается только одного транспортного уровня и единственного источника правды для состояния приложения. Он также будет запускать обновления, когда приложение не открыто, поскольку это Push-уведомления.

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

Плюсы:

  • Push-уведомления работают, даже когда приложение закрыто
  • Единственный источник правды, транспортный уровень

Минусы:

  • Самое нестандартное решение
  • Будет включать в себя еще много HTTP-запросов в целом

Вариант 3: Cognito Sync Это новее для меня, и я не уверен, может ли это быть на самом деле интерфейс с сервера.

Cognito Sync предлагает синхронизацию состояния пользователя. для всех устройств в комплекте с автономной поддержкой и является частью Cognito SDK, который я в любом случае буду использовать. Это звучит как то, что я ищу, но не смог найти никаких убедительных доказательств того, можно ли изменять или "запускать" обновления с AWS, а не только с одного из устройств.

Плюсы:

  • Предоставляет абстрактную модель данных в реальном времени
  • Подключен к записи Cognito пользователя OOTB

Минусы:

  • Не уверен, что может быть изменен или обновлен из Lambdas


Мне интересно, есть ли у кого-то опыт работы с AWS в режиме реального времени как части архитектуры на основе лямбды, и если у вас есть мнение о том, как лучше поступить?

4b9b3361

Ответ 1

Я задал аналогичный вопрос для поддержки AWS, и это был их ответ.

Мой вопрос к ним:

Что группа услуг AWS (если это возможно) дает тот же самый в браузере в режиме реального времени DBaaS чувствуют себя как Firebase?

AWS Cognito, похоже, отлично подходит для учетных записей пользователей. Есть что-нибудь аналогично для части данных WebSockets/в режиме реального времени?

Их ответ:

На ваш вопрос Firebase ближе всего к AWS-сервису AWS MobileHub. Вы можете узнать подробнее о мобильном телефоне ниже ссылки.

https://aws.amazon.com/mobile/details/ https://aws.amazon.com/mobile/getting-started/

"AWS Cognito, похоже, отлично подходит для учетных записей пользователей. Есть ли что-нибудь аналогично для части WebSockets/в режиме реального времени?"

Amazon Dynamodb - это быстрый и гибкий сервис базы данных NoSQL для всех приложения, которые нуждаются в последовательной одноразрядной миллисекундной задержке при любой шкале. Это полностью управляемая облачная база данных и поддерживает оба документа и моделей хранения ключей. Его гибкая модель данных, надежная производительности и автоматического масштабирования пропускной способности, делает отлично подходит для мобильных устройств, сетей, игр, рекламных технологий, IoT и многих других Приложения.

Amazon Dynamodb можно дополнительно оптимизировать с помощью Amazon DynamoDB Accelerator (DAX), который является полностью управляемым, высокодоступным, в-кэш памяти, который может уменьшить время отклика Amazon DynamoDB с от миллисекунд до микросекунд, даже при миллионах запросов в секунду.

Для получения дополнительной информации см. документацию ниже.

https://aws.amazon.com/dynamodb/getting-started/ https://aws.amazon.com/dynamodb/dax/

Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь я знаю.

Спасибо.

С уважением,

Веб-службы Tayo O. Amazon

Обратитесь в Центр знаний AWS, базу знаний статьи и видео, которые отвечают на вопросы клиентов об услугах AWS: https://aws.amazon.com/premiumsupport/knowledge-center/?icmpid=support_email_category

Также, исследуя этот ответ, я также нашел это, выглядит интересно:

https://aws.amazon.com/blogs/database/how-to-build-a-chat-application-with-amazon-elasticache-for-redis/

Комментарии к этой статье также интересны.

Джейкоб Уэйкем: Какая польза от этого подход превысил использование aws iot? Кажется, что у меня есть все эти функциональности без написания одной строки кода и с без серверной архитектуры.

Сэм Денглер: Управляемая функция PubSub в AWS IoT сервис также является хорошим подходом к приложениям на основе сообщений, например продемонстрированный в статье. С Elasticache (Redis), клиенты, которые используют Pub/Sub, обычно также используют Redis в качестве данных хранить в других случаях использования, таких как кеширование, таблицы лидеров и т.д. С что вы также можете использовать ElastiCache (Redis) с AWS IoT службы путем запуска функции AWS Lambda через правила AWS IoT двигатель. В зависимости от того, как архивировано приложение на основе сообщений и как данные используются, одно решение может быть лучше, чем другой.

Ответ 2

Проверьте AWS AppSync для некоторых из этих функций в реальном времени и в автономном режиме, используя различные источники данных, включая поиск в базе данных и вычисления.