我正在开发一个新的游戏项目,包括React Native前端和基于Lambda的后端。该应用程序需要一些实时功能,如活动用户记录,地理围栏等。
我一直在关注Firebase的实时数据库,它看起来像是一个非常优雅的实时数据同步解决方案,但我不认为AWS有任何类似的东西。
我可以想到的仅使用AWS服务的“无服务器”实时的3个选项是:
选项1:通过WebSockets进行AWS IoT消息传递
这一点非常明显,是通过IoT SDK实现的托管WebSockets连接。我正在考虑触发Lambdas以响应入站和出站事件,只使用WebSockets作为实时层,就像通常那样在应用客户端上构建自定义处理逻辑。
至少与Firebase相比,其缺点是我必须自己处理事件中的数据,这将在WebSockets之上添加另一层管理,并且必须使用API数据层进行标准化。应用程序的商店。
优点:
缺点:
选项2:推式触发重新获取
另一种选择是使用推送通知作为实时触发器,但使用常规HTTP请求到API网关实际获取更新的有效负载。
我喜欢这种方法,因为它只适用于一个传输层和应用程序状态的单一事实来源。当应用程序未打开时,它也会触发更新,因为这些是推送通知。
缺点是这是很多自定义工作,在推送通知与需要获取的数据之间存在潜在的困难映射。
优点:
缺点:
选项3:Cognito Sync 这对我来说比较新,我不确定它是否可以与服务器实际接口。
Cognito Sync提供用户状态同步。跨设备完成离线支持,是我将要使用的Cognito SDK的一部分。这听起来就像我正在寻找的但却无法找到任何确凿的证据,因为它可以修改或“触发”来自AWS的更新,而不仅仅是来自其中一个设备。
优点:
缺点:
我想知道是否有人有经验在AWS上实时作为基于Lambda的架构的一部分,并且如果您对最佳方法有什么意见?
答案 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
同样在研究这个答案时我也发现了这个,看起来很有趣:
对该文章的评论也很有趣。
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这样的声音是最合适的选择。
答案 4 :(得分:-1)
我知道这是一个老问题,但现在 AWS 提供了 AppSync ......一种在各个方面破坏 Firebase RDB 的服务
答案 5 :(得分:-1)
AWS 放大。您可以在此处找到更多信息:AWS Amplify