Каким будет 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 в режиме реального времени как части архитектуры на основе лямбды, и если у вас есть мнение о том, как лучше поступить?
Ответы
Ответ 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 для некоторых из этих функций в реальном времени и в автономном режиме, используя различные источники данных, включая поиск в базе данных и вычисления.
Ответ 3
Похоже, AWS Serverless является наиболее подходящей альтернативой.
Также интересно: AWS против Firebase - это даже честный бой?