百万用户同时在线之Strom任务设计

在线人数需求

  • 当天总在线人数
  • 同时在线人数
  • 同时在线人数统计周期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

猜你喜欢

转载自woodding2008.iteye.com/blog/2337202
今日推荐