前言
最近公司要求基於公司的hadoop平台做一個關於電信移動網絡的數據分析平台,整個項目需求大體分為四大功能模塊:數據挖掘分析、報表數據查詢、GIS地理化展示、任務監控管理。由於頁面功能較復雜,所以采用前后端分離方式開發。前端采用webpack+vue+vue-router+axios技術棧,后端用django進行開發。從搭建到上線,整個項目前前后后花了差不多一個月時間,中途也遇到一些問題,不過還好都解決了。由於是個人項目,所以我打算把源碼貢獻出來大家一起討論學習。
源代碼
后端:https://github.com/dotafeiying/myproject
前端:https://github.com/dotafeiying/appfont
關於技術選型
由於頁面交互較多,所以整個項目采用前后端分離方式開發。使用Vue.js作為前端框架,代替Django本身較為孱弱的模板引擎,Django則作為服務端提供api接口,使得前后端實現完全分離,更適合單頁應用的開發構建。
使用框架
前端:
webpack + vue + axios + element-ui + iview + zui + jquery
后端:
django + celery
數據庫:
mysql + redis
數據分析:
impala + pandas + sklearn
項目目錄
前端
后端
實現的功能
1、文件上傳預覽
2、異步任務執行
3、websocket實現實時進度
4、表格分頁
5、excel文件動態導出
6、pandas數據分析
7、impala大數據實時查詢分析
8、KMeans、DBSCAN聚類分析
9、距離計算算法優化
10、GIS地圖展示
11、websocket實現實時進度和動態渲染
12、百度地圖批量經緯度轉換(服務端實現)
13、歷史數據流式查詢,解決數據量過大問題
14、樹組件懶加載,改善用戶體驗
15、excel文件流式導出
16、celery異步任務監控管理,websocket實時監控
17、django后台管理
18、項目部署nginx+uwsgi+django+centos7.5
效果圖:
文件上傳前進行數據核查和預覽
異步任務執行和實時進度
表格分頁
海量點聚類分析和GIS展示
歷史數據流式查詢和樹節點懶加載
異步任務實時監控和管理