相当于Firebase实时数据库的AWS是什么?


82

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

我一直在看Firebase的Realtime Database,它看起来像是用于实时数据同步的非常优雅的解决方案,但我认为AWS尚不具备这种功能。

我可以想到的仅使用AWS服务实现“无服务器”实时的3个选项是:

选项1:通过WebSocket进行AWS IoT消息传递

这很明显,这是通过IoT SDK进行的托管WebSockets连接。我当时想触发Lambda,以响应入站和出站事件,只是将WebSockets用作实时层,像通常那样在应用程序客户端上构建自定义处理逻辑。

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

优点:

  • 可扩展的双向实时连接

缺点:

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

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

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

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

缺点是,这是很多自定义工作,在推送通知与需要提取的数据之间可能存在潜在的困难映射。

优点:

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

缺点:

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

选项3:Cognito Sync 这对我来说是较新的,我不确定它是否可以从服务器上实际连接。

Cognito Sync提供用户状态同步。跨设备,具有脱机支持,并且是我仍将使用的Cognito SDK的一部分。听起来就像我在寻找什么,但找不到任何确凿的证据来证明是否有可能从AWS而不是仅从其中一台设备修改或“触发”更新。

优点:

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

缺点:

  • 不确定是否可以从Lambdas进行修改或更新


我想知道是否有人在作为基于Lambda的架构的一部分在AWS上进行实时处理的经验,并且您是否对最佳处理方式有意见?


您是否考虑过在Firebase Web应用程序中实现游戏,例如使用ReactFire,而不是在AWS上实现“ Firebase功能”?
matsev

我有,但是我们正在使用AWS提供的许多服务作为基础架构的一部分,而Firebase仅解决了传输层,在这种情况下,其余的可以由AWS更好地处理,否则ReactFire将是一个不错的选择。
BarakChamo

不确定这是否适用于您的用例,但是Elasticache Redis具有您可以使用的PubSub服务。可能有很多自定义逻辑。
亚当·奥夫恰恰克

Cognito Sync非常适合用于用户个性化数据存储,您可以将其与AWS Lambda触发器配合使用,这在您的用例中绝对适用。
Ankit Pise

我发现这篇比较AWS移动中心和Firebase的Google云文章非常有用:cloud.google.com/docs/compare/aws/mobile
MatthewThomasGB

Answers:


43

我问了一个与AWS Support类似的问题,这是他们的回应。

我对他们的问题:

能使浏览器内的实时DBaaS像Firebase一样的AWS服务(如果可能)是什么?

AWS Cognito似乎非常适合用户帐户。WebSockets /实时数据库部分是否有类似内容?

他们的回应:

对于您的问题,Firebase最接近AWS服务AWS MobileHub。您可以从下面的链接中查看有关mobilehub的更多详细信息。

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

“ AWS Cognito似乎非常适合用户帐户。WebSockets/实时数据库部分是否有类似功能?”

Amazon Dynamodb是一种快速灵活的NoSQL数据库服务,适用于所有需要任何规模的一致,单位毫秒毫秒延迟的应用程序。它是一个完全托管的云数据库,同时支持文档和键值存储模型。其灵活的数据模型,可靠的性能以及吞吐量的自动缩放,使其非常适合移动,Web,游戏,广告技术,IoT和许多其他应用程序。

可以使用Amazon DynamoDB Accelerator(DAX)进一步优化Amazon Dynamodb,该DX是完全托管的,高度可用的内存中缓存,可以将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/

该文章的评论也很有趣。

Jacob Wakeem:与使用AWS物联网相比,这种方法有什么优势?物联网似乎具有所有这些功能,而无需编写任何代码并具有无服务器架构。

Sam Dengler:AWS IoT服务中的托管PubSub功能也是基于消息的应用程序的一种很好的方法,就像本文中演示的那样。借助Elasticache(Redis),使用Pub / Sub的客户通常还将Redis用作其他用例(例如缓存,页首横幅等)的数据存储。话虽如此,您还可以将ElastiCache(Redis)与AWS IoT服务一起使用通过AWS IoT规则引擎触发AWS Lambda函数。根据基于消息的应用程序的体系结构和数据利用方式,一种解决方案可能比另一种更好。


14

使用不同的数据源(包括数据库搜索和计算)签出AWS AppSync中的其中一些实时和脱机功能。


6

AWS Amplify是AWS对Firebase的现代答案。

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

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


试过了。严重缺乏。不推荐。坚持使用Firestore。Amplify甚至没有提到SLA(它是每个服务帐户的价格,如果您没有达成协议,则只有99%的协议是不好的),最大连接数是多少,或者它是如何大规模运行的。较差的。此外,没有用于Firebase-admin之类的服务器端内容的Typescript插件。
奥利弗·迪克森

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.