運行三年,日活百萬的微服務數據分析架構

架構使用的語言知識php

這幾年數據分析迅速發展,咱們也作了一個微數據分析工具。該產品已成功運行三年,知足日活百萬的企業。產品結構很簡單,用世上最簡單的語言php,最廣泛的數據庫mysql,服務器能夠選擇apache也能夠選擇nginx,一切看你本身的喜愛。mysql

1、微服務架構圖nginx

圖片描述
整個流程圖:
一、SDK上傳數據到服務器,若是安裝redis作緩存,數據會最早進到redis,而後定時抽取數據到DB服務器。有了redis能夠大大提升並行數據處理能力。
二、數據庫收集原始數據,存儲過程將數據按照不一樣維度統計各個指標數據,同時將數據彙總表。
三、前臺報表展現,實時報表、小時報表和天報表數據展現。最好作到讀寫分離。web

2、功能架構
圖片描述redis

功能架構主要包括功能、角色和權限三部分。功能是企業服務,用戶使用的每個功能,就是企業的每個服務。角色是用戶操做的歸類,功能與角色的對應關係及權限。瞭解系統架構的現狀,從功能架構開始。sql

3、應用架構數據庫

應用架構的內容包括現有架構圖、web應用現狀和接口架構。其中,接口是應用層面的關鍵,它是程序之間交互的部分。
主要包括clientdata、usinglog、event和errorlog等接口。
SDK經過接口定時發送數據到後臺。
應用架構羅列出先後端調用關係。apache

4、數據設計後端

兩個數據庫,大約一百張表。數據庫的設計依賴業務數據,對業務數據歸類,致使數據設計畫出E_R圖,數據設計完成,最終數據庫設計就出來了。數據庫只要早起設計的號,是能夠作到易伸縮、易拆分的。統計類主要分爲統計的維度,還有就是用戶、設備、錯誤信息等。
一、數據處理能力
日活百萬,啓動次數大概兩百萬,事件數和頁面訪問量起碼在三百到五百萬之間,平均每小時數據量五十萬。運行過程當中,**客戶數據量集中在遲早高峯。根據客戶的特殊狀況,會把一些任務安排在閒暇時間段,好比日任務、周任務、月任務等安排在零晨。
好的硬件配置是數據處理的好幫手,更大的內存更快的硬盤絕對可讓數據流快速執行。
二、數據清洗和讀寫分離
大量原始數據入庫,這些數據處理以後就是垃圾數據了。當全部報表數據都統計以後並寫入各個維度表以後,須要定時把這些數據清除掉。
前臺報表展現數據跟存儲分析數據庫最好分開。緩存

5、物理架構

微服務的物理架構須要的機器不多,一臺機器也能跑起來。分析統計主要是數據處理能力要求很高,數據庫服務器須要兩臺,web端須要一臺足矣。多年運營結果是併發和數據庫處理能力是統計分析的最大瓶頸。

6、繼續優化的方向

一、數據讀寫分離,數據清洗。
二、併發量。

7、客戶

客戶最關心的數據:
每個客戶最關心的就是用戶表,用戶新增情況、用戶活躍狀況、用戶留存狀況。
不一樣的客戶對用戶要求不一樣,須要判斷用戶是不是刷機來的,用戶跟設備號及用戶ID(用戶號碼)之間的映射關係。
事件數據也是很重要的,關係轉化率。
頁面訪問跟事件是同等重要。
錯誤數據能夠檢測應用存在的Bug。
不一樣的客戶,不一樣的使用場景對指標會有不一樣需求。
本文原創首發於Cobub Razor官網博客,做者qhzhang, 轉載請註明出處!

相關文章
相關標籤/搜索