博采众长,精于一技。Live for love, work for dream.

用户行为统计分析系统架构设计

项目需求
1.流量统计:统计应用程序的总用户数,每日新增用户数,并且以丰富的图表形式展现出来,让市场人员更好的掌握应用程序的增长趋势,销售情况等。
2.行为分析:分析应用程序每天的使用情况,包括活跃用户,启动次数,每次用户使用时长以及应用程序的活跃程度。帮助市场人员更好的了解用户对应用程序的使用程度,广告价值等。了解到用户来自哪里(针对中国用户的地理分布到省市级别),在使用什么型号的手机,所基于操作系统版本等信息, 以帮助开发人员改进应用程序,挖掘很深度的商业价值。记录单个用户的使用频率,绘制出一条用户使用趋势的曲线,通过它了解到应用程序的生命周期,用户使用的频繁程度等信息。

架构设计
analytics.png
总体架构图

设计思路
1.在手机应用程序里集成统计代码,当用户执行某些行为动作时,向服务器发送请求;
2.日志服务器保存用户请求日志,定期切割;
3.用户行为分析器对行为日志进行分析,汇总统计数据;
4.市场人员登陆统计后台查看统计分析结果。

技术实现
1.统计模块:HttpEmptyGifModule,用户向服务器发送HTTP请求,服务器返回一张1x1的gif图片。目前百度统计和Google分析都是这样的做法。
2.日志切割:利用系统的定期任务Crontab,对Nginx的log进行切割保存备份。
3.行为分析:分析器对切割好的日志进行分析统计,把结果汇总写入数据库。(分析器目前采用Python来写,当然Perl/PHP也可以;统计结果数据采用MySQL,你也可以根据你的喜好改用别的数据库,NOSQL数据库也是一个不错的选择)
4.统计后台:用Jquery+Highcharts呈现统计结果(做图表的工具有很多,如:FusionChartamCharts)。

统计报表
a1.jpg
流量统计
a4.jpg
活跃用户变化趋势
a3.jpg
设备型号分布

日志信息 »

该日志于2010-10-12 10:30由 Rebill 发表在程序设计分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过评论 RSS订阅这个日志的所有评论。

相关日志 »

  • 哇!恭喜您找到了一个独一无二的文章。

赞助链接 »

已有 6 条评论 »

  1. DP DP

    我之前做过的其实也就类似这样.感觉上谈不上什么架构,本来需求就是这样.
    这类型的系统应该更多的考虑扩展性问题,业务人员经常抽风这种事情我遇见得太多,是不是说要统计一些你原本没有统计的内容.所以系统的横向扩展尤为重要.
    补充一下,当然我之前也曾考虑过这点,一种简单的方案是不断添加新的统计参数,但是这也不是一种好的解决方案.我自己的解决方案是用字符串方式存储,通过正则来分割内容.虽然统计服务器程序会做得比较杯具,但是就算以后业务人员如何抽风,我只要修改统计内容获取的规则就可以获取和处理用户信息.
    关于日志切割,我自己是用作业去做的..你写的那个什么的都是浮云啊浮云...
    以上可能是一些比较细节方面的问题..也只能当做经验一说

    1. @DP
      项目刚上线,一切都要等待时间的考验。

  2. Kyle Kyle

    服务器返回一张1x1的gif图片是便于各种类型的统计,如RSS等。
    谢谢你的分享

  3. toby toby

    我也正在做一个这样的系统,你的系统架构没有什么问题,但是统计结果的延迟性会很大.因为需要分析nginx的log,再入库,再整理出结果.我想做一个能实时得到结果的流量统计系统,如bit.ly一样.点击生成的某个段地址,立刻能从报表中获取这个段地址的pv.不知道这个是怎么实现的.如果你知道是怎么实现的,能告诉我吗?我的邮件是flmh1314@163.com

    1. 分析Nginx的Log,你可以设定分析时间间隔(例如1分钟),追求实时性对系统开销比较大。高性能短网址有现成的开源方案(基于MongoDB):http://hg.splayer.org/seso-shorten-url/

    2. toby toby

      开源的短地址方案有很多.我不是要这个方案.我是说如何实时对短地址进行统计,如点击量.

添加新评论 »

返回顶部
无觅相关文章插件,快速提升流量