今天跟大家唠唠我捣鼓的“坎通纳”项目,不是足球明星,是代码!这名字纯粹是因为我喜欢他那股子“君临天下”的范儿,代码也要写出这种感觉,哈哈。
我是想做一个用户行为分析系统,有点像GA(Google Analytics)那种,但更轻量级,更定制化。毕竟咱也不想啥都用别人的,自己撸一个,心里踏实。
我用Python搭了个架子,主要是考虑到数据处理方便,而且我个人对Python也比较熟。然后,开始定义数据结构,用户的行为嘛不外乎点击、浏览、购买等等,每个行为都要记录时间戳、用户ID、页面URL之类的关键信息。这部分挺枯燥的,就是不停地定义类和属性。
数据收集这块,我选择了用Nginx做反向代理,然后用Lua脚本来拦截请求,把用户行为数据塞到消息队列里。为啥要这么搞?直接在前端埋点不行吗?当然行,但这样更灵活,而且对前端代码侵入性更小,以后要改动也方便。Lua脚本写起来也不复杂,就是一些HTTP请求的处理和消息队列的发送。
消息队列我用了RabbitMQ,这玩意儿稳定,而且文档也全,用起来省心。然后,我写了一个消费者,从RabbitMQ里把数据拉出来,进行清洗、转换,再存到数据库里。
数据库这块,我选择了ClickHouse。为啥选它?因为它的查询速度是真的快,尤其是在大数据量的情况下。而且它对SQL的支持也很我这种SQL苦手也能轻松上手。
数据分析这块,我写了一些简单的SQL查询,比如统计用户的日活、转化率之类的。以后肯定还要加上更复杂的分析功能,比如用户分群、行为预测之类的。
我用Flask搭了一个简单的Web界面,用来展示分析结果。界面丑是丑了点,但功能是没问题的,能把数据清晰地展示出来就行。
整个项目撸下来,感觉还是挺有成就感的。虽然还有很多地方需要完善,比如数据可视化、告警机制等等,但至少现在能跑起来了,而且能满足我的基本需求。
下一步,我打算把这个项目部署到服务器上,然后接入一些真实的用户数据,看看效果怎么样。如果效果好的话,说不定以后还能把它开源出来,让更多的人一起用。
这回的“坎通纳”项目,让我又一次体会到了coding的乐趣。看着自己的代码一点点地跑起来,解决一个又一个的问题,这种感觉真的是太棒了!
还没有评论,来说两句吧...