【问题标题】:What would be the AWS equivalent to Firebase Realtime Database?与 Firebase 实时数据库等效的 AWS 是什么?
【发布时间】:2017-01-28 02:45:51
【问题描述】:

我目前正在开发一个新游戏项目,该项目将包括一个 React Native 前端和一个基于 Lambda 的后端。该应用需要一些实时功能,例如活动用户记录、地理围栏等。

我在看 Firebase 的实时数据库,它看起来是一个非常优雅的实时数据同步解决方案,但我认为 AWS 没有类似的东西。

对于仅使用 AWS 服务的“无服务器”实时,我能想到的 3 个选项是:

选项 1:通过 WebSockets 的 AWS IoT 消息传递

这个很明显,通过 IoT SDK 的托管 WebSockets 连接。我正在考虑触发 Lambda 以响应入站和出站事件,并仅使用 WebSockets 作为实时层,像通常那样在应用程序客户端上构建自定义处理逻辑。

至少与 Firebase 相比,这样做的缺点是我必须自己处理事件中的数据,这将在 WebSockets 之上添加另一层管理,并且必须使用 API 数据层进行标准化应用程序的商店。

优点:

  • 可扩展的双向实时连接

缺点:

  • 仅在应用打开时有效
  • 消息结构需要实现
  • 要管理的多个传输层

选项 2:推送触发重新获取

另一种选择是使用推送通知作为实时触发器,但使用对 API 网关的常规 HTTP 请求来实际获取更新的有效负载。

我喜欢这种方法,因为它只坚持一个传输层和应用程序状态的单一事实来源。它还会在应用未打开时触发更新,因为这些是推送通知。

缺点是这是大量的自定义工作,在推送通知与需要获取的数据之间进行潜在的映射很困难。

优点:

  • 即使应用关闭,推送通知也能正常工作
  • 单一事实来源,传输层

缺点:

  • 最定制的解决方案
  • 总体上将涉及更多的 HTTP 请求

选项 3:Cognito 同步 这对我来说是新的,我不确定它是否真的可以从服务器接口。

Cognito Sync 提供用户状态同步。跨设备完成离线支持,并且是我将使用的 Cognito SDK 的一部分。这听起来正是我正在寻找的东西,但找不到任何确凿的证据证明是否可以从 AWS 而不仅仅是从其中一台设备修改或“触发”更新。

优点:

  • 提供抽象的实时数据模型
  • 已连接到 Cognito 用户记录 OOTB

缺点:

  • 不确定是否可以从 Lambda 修改或更新

我想知道是否有人有在 AWS 上作为基于 Lambda 的架构的一部分进行实时操作的经验,以及您对什么是最好的方法有意见?

【问题讨论】:

  • 您是否考虑过在Firebase web app 中实现游戏,例如使用ReactFire,而不是在 AWS 上实现“Firebase 功能”?
  • 我有,但是我们正在使用 AWS 提供的许多服务作为我们基础设施的一部分,Firebase 只解决传输层,在这种情况下,其余的由 AWS 更好地处理,否则 ReactFire 会很棒选项。
  • 不确定这是否适用于您的用例,但 Elasticache Redis 有您可以使用的 PubSub 服务。可能有很多自定义逻辑。
  • Cognito Sync 非常适合用户个性化数据存储,您可以将 AWS Lambda 触发器与它一起使用,这非常适合您的用例。
  • 我发现这篇比较 AWS Mobile Hub 和 Firebase 的谷歌云文章非常有用:cloud.google.com/docs/compare/aws/mobile

标签: amazon-web-services firebase-realtime-database real-time aws-lambda aws-iot


【解决方案1】:

我向 AWS Support 提出了类似的问题,这是他们的回复。

我对他们的问题:

提供相同服务的 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 数据库服务,适用于所有人 需要一致的个位数毫秒延迟的应用程序 任何规模。它是一个完全托管的云数据库,同时支持 文档和键值存储模型。其灵活的数据模型,可靠 性能和吞吐能力的自动扩展,使其成为 非常适合移动、网络、游戏、广告技术、物联网和许多其他 应用程序。

Amazon Dynamodb 可以通过 Amazon DynamoDB 进一步优化 Accelerator (DAX) 是一个完全托管的、高度可用的、 内存中缓存,可将 Amazon DynamoDB 响应时间从 毫秒到微秒,即使每秒有数百万个请求。

有关详细信息,请参阅以下文档。

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

如果您有任何其他问题,请不要犹豫,让 我知道。

谢谢。

最好的问候,

Tayo O. 亚马逊网络服务

查看 AWS Support 知识中心,这是一个知识库 回答有关 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/

那篇文章的 cmets 也很有趣。

雅各布·韦克姆: 这有什么好处 方法已经过度使用 aws iot?似乎物联网拥有所有这些 无需编写任何代码即可实现功能 无服务器架构。

山姆登格勒: AWS IoT 中的托管 PubSub 功能 服务也是基于消息的应用程序的好方法,例如 文章中演示的那个。使用 Elasticache (Redis), 使用 Pub/Sub 的客户通常也使用 Redis 作为数据 存储其他用例,例如缓存、排行榜等。使用 也就是说,您还可以将 ElastiCache (Redis) 与 AWS IoT 结合使用 通过 AWS IoT 规则触发 AWS Lambda 函数提供服务 引擎。取决于基于消息的应用程序的架构方式 以及如何利用数据,一种解决方案可能比 另一个。

【讨论】:

  • 所有 MobileHub 链接现在都重定向到 AWS Amplify
【解决方案2】:

查看 AWS AppSync,了解其中一些使用不同数据源的实时和离线功能,包括数据库搜索和计算。

【讨论】:

  • 不推荐。引擎盖下的复杂性很快就会失控。近两年发展缓慢。只适用于小型一次性项目。
【解决方案3】:

听起来 AWS Serverless 是最合适的替代方案。

也想知道:AWS vs Firebase - Is It Even a Fair Fight?

【讨论】:

    【解决方案4】:

    AWS Amplify 是 AWS 对 Firebase 的现代解决方案。

    构建移动和网络应用程序的最快方法

    AWS Amplify 是一个开发平台,用于构建安全、可扩展的 移动和网络应用程序。它使您可以轻松进行身份验证 用户,安全存储数据和用户元数据,授权选择性 访问数据、集成机器学习、分析应用程序 指标,并执行服务器端代码。 Amplify 涵盖了完整的 来自版本控制、代码的移动应用程序开发工作流程 测试,生产部署,它很容易与您的 业务从数千用户到数千万用户。放大 作为 Amplify 框架的一部分的库和 CLI 是开源的,并且 提供可插入的接口,使您能够自定义和创建 你自己的插件。

    【讨论】:

    • 试过了。严重缺乏。不推荐。坚持使用 Firestore。 Amplify 甚至没有提到 SLA(它是每个服务帐户,如果你没有协议,它只有 99%,这是不好的)或者最大连接数是多少,或者它是如何大规模工作的。较差的。此外,对于像 firebase-admin 这样的服务器端内容,没有 Typescript 插件。
    • 放大不是,在我看来,放大使一切变得复杂。
    【解决方案5】:

    我知道这是一个老问题,但现在 AWS 提供 AppSync...一项在各个方面都破坏 Firebase RDB 的服务

    【讨论】:

      【解决方案6】:

      AWS 放大。你可以在这里找到更多信息:AWS Amplify

      【讨论】:

        猜你喜欢
        • 2019-10-09
        • 2021-12-26
        • 2019-06-28
        • 1970-01-01
        • 2020-02-10
        • 2018-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多