美文网首页
开源数据统计平台 -- GoAnalytics

开源数据统计平台 -- GoAnalytics

作者: Tao_Liang | 来源:发表于2019-05-19 16:43 被阅读0次

    本项目用于移动端的数据统计,项目地址:https://github.com/lt90s/goanalytics。开源的数据统计countly做的很好,但是基础免费版的功能实在不够看,因此我就决定用go语言来写了这个项目,一来可以在实践中学习go语言,二来也可以开发功能完整的开源平台。该项目正在开发中,欢迎有兴趣的gopher一起参与。

    数据存储方面使用的是mongodb。由于数据统计业务几乎不涉及到事务以及严格的一致性场景,而且mongodb的自动分片功能可以支撑较大的数据量。使用大数据的存储组件的话就太过于重了。因此选用mongodb。

    业务逻辑整体基于事件的发布订阅。当收到客户端请求,frontend会对请求数据进行处理,然后发布响应的事件。backend收到事件后进行统计处理。

    后台展示基于Vue-Admin-Template开发,本人前端能力基本就是依葫芦画瓢,希望有前端大神来开发后台页面,项目地址: https://github.com/lt90s/goanalytics-web

    目前客户端API仅有2个。一个是上报openApp打开APP时间,一个是上报usageTime一次启动使用时长事件。SDK方面也需要移动端的大神开发,感兴趣的大佬可以一起开发。

    下面放一点后台页面的效果图:

    useFrequency.png userIncrease.png userRetention.png customize.png

    项目介绍

    GoAnalytics是基于go实现的一个数据统计平台,用于统计移动端的数据指标,比如启动次数、用户增长、活跃用户、留存等指标分析。前端数据展示项目是 goanalytics-web。目前正在积极开发中,欢迎提交新的需求和pull request。

    summary.png

    特性

    • 数据实时分析展示
    • 用户相关基本指标:增长、留存、活跃、启动等
    • 渠道、平台、版本交叉对比
    • 自定义事件统计
    • 轻量

    构建

    Go版本需要支持module,本地开发测试

    # 开启mongodb
    
    git clone https://github.com/lt90s/goanalytics
    cd goanalytics
    go get -v
    
    # 创建管理员账号
    cd cmd/account
    go build
    ./account
    
    # 启动goanalytics-web项目,参考 https://github.com/lt90s/goanalytics-web
    # 登录管理员账号创建新应用会生成 AppId
    
    
    # 生成测试数据
    cd cmd/test_data
    go build
    ./test_data -appId AppId (上一步中生成的AppId)
    
    # 现在就可以在浏览器中看到数据展示
    

    cmd/goanalytics_kafkagoanalytics_rmq是分别基于kafkarocketmq的发布订阅功能做的数据发布
    和订阅处理,横向扩展能力比local高。另外由于rocketmq还没有原生基于go的客户端(原生客户端正在开发中
    2.0.0 road map),可能会存在问题。

    开发

    项目结构

    ├── README.md
    ├── api
    │ ├── authentication 用户认证、管理API
    │ ├── middlewares GIN 中间件
    │ └── router API route
    ├── cmd
    │ ├── account 生成admin账号命令
    │ ├── analytic_local 不依赖消息系统的goanalytics
    │ ├── goanalytics_kafka 基于kafak的goanalytics
    │ ├── goanalytics_rmq 基于rocketmq的goanalytics
    │ └── test_data 生成测试数据命令
    ├── common
    │ └── data.go
    ├── conf 配置
    │ └── conf.go
    ├── event
    │ ├── codec 数据编解码
    │ └── pubsub 消息发布订阅
    ├── go.mod
    ├── go.sum
    ├── metric 所有的统计指标在这里实现
    │ ├── init.go
    │ └── user 用户相关指标的实现
    ├── schedule
    │ └── schedule.go 定时任务调度
    ├── storage 存储模块
    │ ├── counter.go 计数器接口
    │ ├── data.go
    │ └── mongodb 基于mongodb实现的存储及计数器
    └── utils
    ├── date.go
    ├── date_test.go
    ├── errors.go
    └── key.go

    相关文章

      网友评论

          本文标题:开源数据统计平台 -- GoAnalytics

          本文链接:https://www.haomeiwen.com/subject/wodqzqtx.html