什么是AWS等同于Firebase实时数据库?

时间:2016-09-20 08:51:17

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

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

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

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

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

这一点非常明显,是通过IoT SDK实现的托管WebSockets连接。我正在考虑触发Lambdas以响应入站和出站事件,只使用WebSockets作为实时层,就像通常那样在应用客户端上构建自定义处理逻辑。

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

优点:

  • 可扩展的双向实时连接

缺点:

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

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

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

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

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

优点:

  • 即使应用关闭,推送通知仍然有效
  • 单一事实来源,传输层

缺点:

  • 大多数自定义解决方案
  • 将涉及更多的整体HTTP请求

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

Cognito Sync提供用户状态同步。跨设备完成离线支持,是我将要使用的Cognito SDK的一部分。这听起来就像我正在寻找的但却无法找到任何确凿的证据,因为它可以修改或“触发”来自AWS的更新,而不仅仅是来自其中一个设备。

优点:

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

缺点:

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


我想知道是否有人有经验在AWS上实时作为基于Lambda的架构的一部分,并且如果您对最佳方法有什么意见?

6 个答案:

答案 0 :(得分:33)

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

我向他们提问:

  

AWS服务组(如果可能的话)提供相同的内容   浏览器中的实时DBaaS感觉像Firebase?

     

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数据库服务   需要一致的单位数毫秒延迟的应用程序   任何规模。它是一个完全托管的云数据库并支持两者   文档和键值存储模型。其灵活的数据模型,可靠   性能,以及吞吐量容量的自动扩展,使其成为一种   非常适合移动,网络,游戏,广告技术,物联网等等   应用。

     

可以使用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 Knowledge Center,这是一个知识库   回答客户关于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 iot?似乎iot拥有所有这些   功能,而无需编写单行代码和   无服务器架构。

     

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

答案 1 :(得分:10)

使用不同的数据源(包括数据库搜索和计算)查看AWS AppSync中的部分实时和离线功能。

答案 2 :(得分:6)

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

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

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

答案 3 :(得分:1)

像AWS Serverless这样的声音是最合适的选择。

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

答案 4 :(得分:-1)

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

答案 5 :(得分:-1)

AWS 放大。您可以在此处找到更多信息:AWS Amplify