💡
原文英文,约1000词,阅读约需4分钟。
📝
内容提要
2017年,Reddit使用Kafka、Redis和Cassandra设计了一个复杂的帖子浏览量和独立观众计数系统。作者提出了一种更简单的解决方案,利用Tinybird项目,通过单个SQL查询实时存储和计数帖子浏览,具备良好的扩展性。
🎯
关键要点
- 2017年,Reddit设计了一个复杂的帖子浏览量和独立观众计数系统,使用Kafka、Redis和Cassandra。
- Reddit的系统能够在12KB的存储中计数1000亿个独特的64位ID。
- 作者认为有更简单的解决方案,利用Tinybird项目通过单个SQL查询实时存储和计数帖子浏览。
- Tinybird项目可以存储原始事件、通过单个SQL查询计数独特观众、实时获取结果,并按时间过滤。
- 作者使用Tinybird CLI创建了一个项目来存储和计数帖子浏览,定义了数据源和API。
- Tinybird生成了假数据以匹配数据源的模式,测试了API的准确性。
- 作者对API进行了小的调整以确保请求中提供post_id,并将其部署到云端。
- 测试结果显示,存储压缩后约为57MB,查询延迟约为20毫秒,实时摄取速率为每秒10万事件。
- 该解决方案在扩展性方面表现良好,预计在处理1000亿事件时仍能保持良好的查询延迟。
- 尽管存储了更多原始数据,但现代列式压缩使其高效,且可以进行多种数据操作。
- 该方案避免了复杂的数据管道、服务或存储之间的同步、监控系统和分布式系统的麻烦。
- 作者鼓励读者查看Tinybird文档以快速上手,并预告将讨论更大规模下的挑战。
❓
延伸问答
Reddit在2017年是如何设计其帖子浏览量计数系统的?
Reddit使用Kafka、Redis和Cassandra构建了一个复杂的系统,能够在12KB的存储中计数1000亿个独特的64位ID。
Tinybird项目提供了什么样的解决方案?
Tinybird项目通过单个SQL查询实时存储和计数帖子浏览,避免了复杂的数据管道和服务同步问题。
使用Tinybird进行帖子浏览量计数的步骤是什么?
首先创建Tinybird项目,定义数据源和API,然后生成假数据以测试API的准确性,最后将其部署到云端。
Tinybird的解决方案在扩展性方面表现如何?
Tinybird的解决方案在处理1000亿事件时仍能保持良好的查询延迟,预计存储约550GB的数据。
Tinybird的查询延迟和实时摄取速率是多少?
查询延迟约为20毫秒,实时摄取速率为每秒10万事件。
使用Tinybird的方案有哪些限制?
该方案存储了更多原始数据,查询需要更多计算,且在极端规模下可能需要优化。
➡️