
公司對客戶開放多個系統,運營人員想要了解客戶使用各個系統的情況,在此之前,數據平台團隊已經建設好了統一的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可以橫着走了。
