Firebase 分布式计数器中是否确实需要事务?
据firestore称: 事务是对一个或多个文档的一组读写操作 此外: 当客户端脱机时,事务将失败 现在firestore的限制是: 在CloudFireStore中,您只能每秒更新一次单个文档,这对于某些高流量应用程序来说可能太低了 因此,当流量较高时,使用云函数和运行事务来增加/减少计数器将失败 因此,他们讨论了使用的方法 根据分布式计数器的算法:Firebase 分布式计数器中是否确实需要事务?,firebase,transactions,google-cloud-firestore,counter,Firebase,Transactions,Google Cloud Firestore,Counter,据firestore称: 事务是对一个或多个文档的一组读写操作 此外: 当客户端脱机时,事务将失败 现在firestore的限制是: 在CloudFireStore中,您只能每秒更新一次单个文档,这对于某些高流量应用程序来说可能太低了 因此,当流量较高时,使用云函数和运行事务来增加/减少计数器将失败 因此,他们讨论了使用的方法 根据分布式计数器的算法: 创建碎片 随机选择一个碎片 运行事务以递增/递减计数器 获取所有碎片并聚合 显示计数器值的结果 场景: 假设您有一个计数器,当添加文档并在U
- 创建碎片
- 随机选择一个碎片
- 运行事务以递增/递减计数器
- 获取所有碎片并聚合 显示计数器值的结果
假设您有一个计数器,当添加文档并在UI中显示计数器时,该计数器将被更新。现在,对于良好的用户体验,我不能在网络离线时阻止用户界面。因此,我必须允许创建/更新文档,即使客户端处于脱机状态,并在客户端处于联机状态时同步这些更改,以便所有其他侦听这些更改的人都能收到正确的计数器值 现在,当客户端脱机时,事务失败。 因此,要获得最佳用户体验(即使在离线状态下),我的问题是:
关于这100个离线操作的云功能,不会有任何问题。Firebase服务器可以很好地处理并发操作。好的,总而言之,您建议在实时数据库而不是firestore上托管计数器,还建议使用云fns来增加/减少实时数据库中的计数器。我对这一点的理解是否正确?是的,它是正确的。我建议您在Firebase实时数据库中托管计数器,因为它比云Firestore中的计数器便宜。是的,您可以编写一个与用户设备无关的函数。一切都在服务器端完成。问题是如何在设备脱机时提供良好的用户体验。例如,让我们以堆栈溢出为例。即使在设备离线的情况下,它也允许用户向上投票。网络联机后,它将同步到服务器并更新计数器。当设备脱机时,我是否可以在firestore中执行此操作。。只有在收到更改时才会触发云操作,并且只有在设备联机时才会触发云操作