我想深入了解各公司如何解决计算/增加"喜欢" /"观看" /"转推"或类似的规模。
在用户基数超过5000万月活跃用户的情况下,我看到Redis和Cassandra用于存储多组userIds以快速检索设置基数(例如,查看者数量)。这些解决方案有一些瑕疵,但效果很好,可以并且正在扩大规模。但是,我很好奇其他商店在这种情况下使用的是什么。
具体来说,做解决方案:
答案 0 :(得分:2)
使用集合或其他数据结构,还是只使用普通键值?
HyperLogLog是一种功能强大的算法,可以为您提供具有微小空间存储空间的独特用户/视图的数量,并提供一些近似值。
确切或近似计数,?
对于这个比例,确切的计数是无用的,没有意义。毕竟当你拥有5千万用户时,你知道你拥有1.34百万的独立访问者,对于一个误差率为2%的项目来说已经足够了。
仅限内存,还是混合?
这取决于您在延迟方面的要求。在内存中授予非常快速的访问权限但存在数据丢失的风险。您可以在内存中使用持久存储支持
开源解决方案,还是本土化?
不要重新发明轮子。使用经过充分验证和战场验证的工具
是否有人建立了一个轻量级的仅限套装存储系统,并在其上面进行了超级博客评估?
据我所知,Redis提供HyperLogLog作为数据结构,因此您可以使用它。使用磁盘持久性来经常检查超级日志数据结构到磁盘,以避免在节点出现故障时丢失它
否则,您还可以在Cassandra中实现HyperLogLog算法,利用Cassandra使用max(timestamp)
作为解析规则的事实,这样只需欺骗数据库并将HyperLogLog存储桶值存储为时间戳。
但这意味着您需要自己动手,并有可能出现错误。