[转]分布式实时统计系统--RAINBIRD
最近Twitter开发了一款分布式实时统计系统Rainbird。
用处
Rainbird可以用于实时数据的统计:
1 统计网站中每一个页面,域名的点击次数
2 内部系统的运行监控(统计被监控服务器的运行状态)
3 记录最大值和最小值
性能要求
作为大型网站的分布式应用,需要具备以下性能:
1 极高的写入性能,可以达到100,000的WPS
2 非常高的读取性能,可以达到10,000s的RPS
3 高度的可扩展性,包括读取和存储等等,能够扩展到100+ TB的量级
4 读取速度响应间隔短,绝大多数的读取速度应该不超过100ms
系统组件
Rainbird一款基于Zookeeper, Cassandra, Scribe, Thrift的分布式实时统计系统,这些基础组件的基本功能如下:
1 Zookeeper,Hadoop子项目中的一款分布式协调系统,用于控制分布式系统中各个组件中的一致性。
2 Cassandra,NoSQL中一款非常出色的产品,集合了Dynamo和Bigtable特性的分布式存储系统,用于存储需要进行统计的数据,统计数据,并且提供客户端进行统计数据的查询。(需要使用分布式Counter补丁CASSANDRA-1072)
3 Scribe,Facebook开源的一款分布式日志收集系统,用于在系统中将各个需要统计的数据源收集到Cassandra中。
4 Thrift,Facebook开源的一款跨语言C/S网络通信框架,开发人员基于这个框架可以轻易地开发C/S应用。
整体设计
Rainbird的设计架构图如下:
整个Rainbird系统中各个组件之间的协调和容灾处理由ZooKeeper负责,Cassandra负责整个数据的存储和统计。
Front End中部署了Scribe,收集需要统计的数据,然后将收集到数据实时地发生到Rainbird Aggregator中。
Rainbird Aggregator将缓存收集的数据(1M),并将缓存的数据进行一次预处理,然后再将数据一次性批量写入到Cassandra中。这里预处理的作用类似于MapReduce框架中的combiner的作用,在Maper端做Reduce。
Rainbird Query接受用户的查询请求,直接到Cassandra中查询已经统计好的数据返回给客户端。
更多参考
如果希望了解更详细的信息,可以参考:http://www.slideshare.net/kevinweil/rainbird-realtime-analytics-at-twitter-strata-2011
另外,想了解更多关于Cassandra的信息,可以参考:http://www.cnblogs.com/gpcuster/tag/Cassandra/
想了解更多关于ZooKeeper的信息,可以参考:http://www.cnblogs.com/gpcuster/tag/ZooKeeper/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库