在线人数需求
- 当天总在线人数
- 同时在线人数
- 同时在线人数统计周期1分钟
用户心跳数据采集
- 登陆后前30秒每10秒汇报一次心跳
- 登陆超过30秒每30秒汇报一次心跳
- Max心跳QPS=500W/30s=170W+
Strom任务设计
- 使用Hyperloglog结构代替HashMap做过滤
- spout发送bolt使用localOrShuffleGrouping减少网络传输
- spout与bolt数量是worker数量N倍,让worker处理量保持均衡
- Kafka partition与worker数量相等消除热点
- countbolt使用ticktuple定时将hyperloglog发送至sumbolt进行汇总【HyperLogLog.merge(HyperLogLog)】
- sumbolt负责汇总并定期持久化至DB,worker重启首先装载DB数据
- 关闭ACK消息跟踪,提升性能
Strom任务拓扑结构

压力测试
模拟170W QPS心跳信息
HyperLogLog: http://woodding2008.iteye.com/blog/2332505
本文介绍了一种利用Strom平台实现大规模在线人数统计的方法。通过详细设计心跳数据采集流程,采用Hyperloglog结构优化内存占用,并通过合理配置Spout与Bolt提高系统吞吐量。此外,还讨论了如何进行压力测试来验证系统的稳定性。
3万+

被折叠的 条评论
为什么被折叠?



