基于storm,kafka,mysql的实时统计系统

Posted Code Job

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于storm,kafka,mysql的实时统计系统相关的知识,希望对你有一定的参考价值。

公司对客户开放多个系统,运营人员想要了解客户使用各个系统的情况,在此之前,数据平台团队已经建设好了统一的Kafka消息通道。

为了保证架构能够满足业务可能的扩张后的性能要求,选用storm来处理各个应用系统上传到kafka中的埋点数据并在mysql中汇聚。

埋点数据上报的格式为json,会上报类似如下的数据 

{
    "account": "001",
    "accountName": "旺财宝",
    "subaccount": "001",
    "subaccountName": "caller001",
    "timestamp": 1474625187000,
    "eventType": "phone",
    "eventTags": [
        {
            "name": "incoming",
            "value": 1
        },
        {
            "name": "missed",
            "value": 1
        },
        {
            "name": "edited",
            "value": 1
        }
    ]
}

最终通过Storm,在Mysql中汇聚成如下格式 

account account_name subaccount subaccount_name event_type event_tag start_time end_time count
001 旺财宝     phone incoming 2016/9/23 18:00:00 2016/9/23 18:59:59 53
001 旺财宝     phone missed 2016/9/23 18:00:00 2016/9/23 18:59:59 53

 

 

 

 

通过web包装sql语句来作各个业务场景的查询:如某账号一段时间内某事件发生的次数,所有账号一段时间的各个事件发生的次数,或者某事件高发的时间段等等。

之前考虑了最终结果存到哪里:有这样几个待选,Redis,HBase,MongoDB,Mysql。经过估算发现一年的数据量可能不到一千万,在这个数量级,Mysql可以横着走了。

以上是关于基于storm,kafka,mysql的实时统计系统的主要内容,如果未能解决你的问题,请参考以下文章

基于Flume+Kafka+ Elasticsearch+Storm的海量日志实时分析平台

Flume+Kafka+Storm+Redis构建大数据实时处理系统:实时统计网站PVUV+展示

Kafka+Storm+HDFS整合实践

storm+kafka+redis的实时订单流

storm 整合 kafka之保存MySQL数据库

69_缓存预热解决方案:基于storm实时热点统计的分布式并行缓存预热