内容提要
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的复杂系统与Tinybird的对比
Reddit的系统使用了Kafka、Redis和Cassandra等多种技术,虽然功能强大,但其复杂性和维护成本较高。相比之下,Tinybird提供了一个更简化的解决方案,通过单个SQL查询即可实现实时计数,降低了技术门槛和运维难度。
扩展性与性能
Tinybird的解决方案在处理大量数据时表现出色,测试结果显示在高达1000亿事件的情况下,查询延迟仍保持在20-40毫秒。这种高效的性能使得它适合大规模应用,尤其是在需要快速响应的场景中。
数据存储与压缩优势
尽管Tinybird存储了更多的原始数据,但现代列式压缩技术使得存储效率大幅提升。相比于传统方法,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的方案有哪些限制?
该方案存储了更多原始数据,查询需要更多计算,且在极端规模下可能需要优化。