棋牌手游在线人数监控系统
1 简介
对于一款手游来说,知道当前在线的玩家数量是十分重要的,可以做运营分析和掉人故障预警。
对于一款棋牌游戏,树状结构大致如下:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。房间是基本的采集节点,在服务端程序内部可以实时统计当前房间内的玩家数。
玩法是一级汇总节点,将挂在自己节点下的房间人数加起来,就是这个玩法的人数
麻将是二级汇总节点,将挂在自己节点下的玩法人数加起来,就是这个麻将的人数
所以麻将的人数加起来,就是整个客户端的人数。
2 数据统计
首先考虑的是解耦的问题,服务端小伙伴将每个采集节点的数据实时汇报到中间件,然后监控系统过去取数据,这样彼此的开发上就是分离的。
2.1 数据获取
这里服务端提供一个web api,将所有采集节点的数据打包成一条json数据,格式如下,使用http get方法获取
{ 'timestamp':1554876185,'data': { 'roomid_1': 12, 'roomid_2': 34, 'roomid_1': 34, ... } }
2.2 数据存储
第一步要把所有roomid的数据采集并存储,这里参考zabbix的mysql表设计,每隔一个采集周期(假设1分钟),到web api获取一次数据并写入mysql。
CREATE TABLE `gameroom_sec` ( `roomid` int(8) NOT NULL, `clock` int(11) NOT NULL, `num` int(4) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
第二步做玩法级别的数据汇总,对roomid的数据汇总计算后,写入以下表
CREATE TABLE `gameid_sec` ( `gameid` int(8) NOT NULL, `clock` int(11) NOT NULL, `num` int(4) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
3 掉人预警

更多精彩