在不受写限制的情况下,我们如何实现像Firestore中的Instagram中那样的post liked count
功能?
比方说,正在开发的社交应用程序非常受欢迎,一位拥有数百万粉丝的著名用户发布了一条帖子。自然,在短时间内,许多追随者会喜欢上这篇帖子。likes
不是问题,因为它们是顶级集合。这里的限制与我们无关,因为每个追随者都在更新自己的特定文档。
但是,对于like_count
字段,所有这些用户都将尝试在同一时间更新同一文档。这将是有问题的,因为限制。同样的计数也是错误的。
我了解了"Sharding"或"Distributed Counter",它基本上是将同类计数分配给许多文档,并线性划分限制。然而,这不是我想要的一种解决方案,因为它不能很好地扩展,并且需要太多的架构来生成这样一个简单的数字。
这一限制是否意味着,像Instagram、Twitter、Facebook、Snapchat、TikTok这样的应用程序永远不能将Firestore作为后端?或者有没有一些聪明的策略可以克服这些限制。
一个简单的解决方案可以是为每个赞设置一行,并安排一个函数(至少每分钟一次(来计数和更新主帖子。