准备山寨一个Google Analytics

不用Google Analytics的原因很简单:我需要把数据存在自己的服务器上,然后按我的需求做统计。

所以我需要重新山寨一套Google Analytics,大体上来讲,基本流程是:

  1. 页面加track code
  2. track code搜集完信息后,向后台的http服务器发请求
  3. 通过http服务器的access log来分析

关于页面的track code如何工作,在GA的网站上有一些介绍,其中关于如何搜集浏览器事件我还不大清楚,得去看看GA的代码,反正都是open source的,多花点时间,总能搞清楚。

http server这里我准备这样:给nginx写一个module,首先在内存中维护一个local log buffer,大约200条。然后nginx连kafka。kafka可以视为是一个Java Message Service,但是它的生产者是push模型,而消费者是pull模型。当local log buffer满了就往kafka提交一次。kafka此时可以视为是一个临时文件存储,它存储最近7天的日志。kafka的另外一端是hadoop(虽然我的大领导很不喜欢它),把kafka作为一种特殊的数据源,为它实现一个input format,然后运行map reduce将日志从kafka中拽到HDFS中。下一步就是在HDFS中对日志做分析了。

我现在比较犹豫的是到底是给nginx写module,还是自己写一个http server处理请求。因为我对nginx不熟悉,贸然下手给它写代码也许会死的很难看。反正我的请求量也不高,每秒也就几千,用libevent 单线程就能搞定,实在不行多开几个进程/机器。用nginx的好处是我的那些静态文件(如ga.js)能够一并放给nginx处理。你说呢?

此博客中的热门博文

在windows下使用llvm+clang

少写代码,多读别人写的代码

tensorflow distributed runtime初窥