目前,我正在一个新的游戏项目中,该项目将由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上进行实时处理的经验,并且您是否对最佳处理方式有意见?