游戏公司统计留存,ltv等数据需要以下几个系统
logserver 日志接收系统(接收游戏服务端推送过来的数据)
collection 采集系统(统计汇总游戏端的log数据)
platform 平台系统(将汇总好的数据展示使用,其中包括数据查询----实时,数据统计查询---T+1,数据监控---如踢人,发消息等功能)
1. Logserver
该系统主要功能将游戏服务端推送过来的日志保存在一台数据库服务器中(日志主),该数据服务器中有许多数据库一个游戏区对应一个数据库,依照不同的游戏区号分别插入对应的数据库中,如下图
图中log_db_**表示不同区的游戏id,与此同时,配置一个从数据服务器,里面的数据库与主数据库相对应
主从之间采用 mysql 数据库的master/slave模式配置,通过log同步ddl和dml操作
游戏服务器通过mina搭建的NIO传输数据,规定每个日志的消息号,通过对象传输数据
2.Collection
采集系统通过定时任务汇总不同游戏区的统计数据,将不同的游戏区存入表中,通过区id,游戏id,数据库类型(采集库或日志库)作为主键,采集程序启动后,通过获得不同区的数据源加载ibatis的DAO
package ibatis;
import java.io.IOException;
import java.io.Reader;
import java.util.Properties;
import org.apache.log4j.Logger;
import com.ibatis.common.resources.Resources;
import com.ibatis.dao.client.DaoManagerBuilder;
public class DaoManager {
public static final Logger logger = Logger.getLogger(DaoManager.class);
public DaoManager(Properties props,String res){
try {
//res为sqlmap的位置 如 com/***/dao.dao.xml,props为数据库查询出来的数据,添加方法转化为配置文件格式 如
//url=jdbc:mysql://192.168.100.114:4307/log?useUnicode=true&characterEncoding=utf8
Reader reader = Resources.getResourceAsReader(res);
DaoManagerBuilder.buildDaoManager(reader, props);
} catch (Exception e) {
logger.error("error",e);
}
}
}