基于 Flink、ClickHouse 的舆情分析系统:系统详细设计说明书
文章目錄
- 1. 引言
- 1.1 編寫目的
- 1.2 背景
- 1.3 參考資料
- 1.4 術語定義及說明
- 2. 設計概述
- 2.1 任務和目標
- 2.1.1 需求概述
- 2.1.2 運行環境概述
- 2.1.3 條件與限制
- 2.1.4 詳細設計方法和工具
- 3. 系統詳細需求分析
- 3.1 詳細功能需求分析
- 3.2 詳細性能需求分析
- 3.3 詳細資源需求分析
- 3.4 接口需求分析
- 3.5 算法需求分析
- 4. 系統總體方案確認
- 4.1 系統總體結構確認
- 4.2 系統詳細界面劃分
- 5. 系統詳細設計
- 5.1 系統程序代碼架構設計
- 5.2 系統結構設計及子系統劃分
- 5.3 系統功能模塊詳細設計
- 5.3.1 分析子系統
- 5.3.2 后臺與前端子系統
- 5.3.3 爬蟲子系統
- 5.4 系統用戶界面詳細設計
- 6. 數據庫系統設計
- 6.1 設計要求
- 6.2 數據庫設計
- 6.2.1 設計依據
- 6.2.2 數據庫種類及特點
- 6.2.3 數據庫邏輯結構
- 6.2.4 數據庫安全
- 6.2.5 數據字典
1. 引言
1.1 編寫目的
??編寫此文檔的目的是通過系統的詳細設計指導系統的編碼等工作。
1.2 背景
A. 待開發系統的名稱:輿情分析系統
B. 系統架構類型:BS 架構類型,即瀏覽器、服務器架構類型
C.開發項目組名稱:東北大學軟件學院大數據班 T09 實訓項目組 (lzf、lcx)
1.3 參考資料
https://wenku.baidu.com/view/1ad0617ddd88d0d232d46a21.html
1.4 術語定義及說明
2. 設計概述
2.1 任務和目標
2.1.1 需求概述
我們的輿情分析系統的需求主要由輿情首頁、輿情事件分析頁、輿情事件預警這三個需求模塊構成。其中輿情首頁包括領域(分類)輿情事件熱度表、領域輿情熱度趨勢、輿情地域分布圖,輿情事件分析包括事件文章分析、事件評論分析、輿情事件分析三大塊(詳細需求令見需求規格說明書),輿情事件預警包括輿情事件負面評論輿情、輿情事件負面評論增長預警、輿情事件熱度增長預警。
2.1.2 運行環境概述
由于系統架構類型為BS架構類型,故而系統運行在服務器上,只要任何一臺安裝了主流瀏覽器的電腦均可以通過IP地址加端口號的方式獲取系統服務、訪問系統頁面。因此,系統的運行環境是指服務器的環境,環境大致如下:
2.1.3 條件與限制
(1) 系統架構要求編碼人員掌握并使用未接觸過的技術——ClickHouse與ElasticSearch來實現系統。
(2) 系統設計自然語言處理的相關技術,主要是中文分詞、中文情感分析。
2.1.4 詳細設計方法和工具
3. 系統詳細需求分析
3.1 詳細功能需求分析
a) 分類輿情事件熱度:按領域展示各領域下的事件及其熱度
b) 分類輿情熱度趨勢:各領域輿情的熱度隨時間的變化趨勢
c) 輿情地域分布圖:輿情文章在全國各個省份的數量分布
a) 輿情事件負面評論預警:根據管理員設置的事件負面評論占比閾值,如果事件的負面評論占比大于閾值,則展示在事件預警頁。
b) 輿情事件負面評論增長預警:根據事件的負面評論占比的環比增長率預警事件,若事件負面評論占比的環比增長率比較大,則進行預警
c) 輿情事件熱度增長預警:根據事件的熱度的環比增長率預警事件,若事件熱度的環比增長率比較大,則進行預警。
a) 輿情事件總覽
??A. 事件關鍵詞分析
??B. 事件傳播走勢分析
??C. 事件核心傳播人分析
b) 輿情事件文章分析
??A. 事件文章點贊排名
??B. 事件文章轉發排名
??C. 事件文章評論排名
??D. 事件文章熱度排名
??E. 事件文章地域分布
??F. 事件文章時間線
c) 輿情事件評論分析
??A. 評論關鍵詞分析
??B. 事件評論者分析
??C. 事件評論情感趨勢分析
??D. 事件評論點贊排名
??E. 事件評論回復排名
3.2 詳細性能需求分析
(1) 網絡正常的情況下用戶點擊網頁后頁面的跳轉時間<=1s;
(2) 頁面數據加載與渲染時間<=5s;
(3) 頁面的數據量較大而導致的頁面加載時間長時,頁面必須提供加載提示。
3.3 詳細資源需求分析
系統需要運行在一個具有10GB內存的、100GB磁盤的CentOS7系統系統上,才能保證系統的性能,并且隨著系統的運行,磁盤的占用會比較大,需要定時清理ClickHouse存儲的過時的輿情數據,當然也可以構建ClickHouse集群解決磁盤占用變大的問題。
3.4 接口需求分析
(1) 中文分詞接口:
采用Jieba分詞提供的分詞接口來進行事件文章的分詞與事件評論的分詞。
(2) 中文情感分析接口:
采用HanLP提供的相關類構建并訓練一個情感分析模型,并針對模型編寫一個中文情感分析的接口。
3.5 算法需求分析
??算法需求主要涉及的事件熱度算法,算法公式參考:https://juejin.cn/post/6844903833856901133
??基于上述文章的熱度計算公式,即
其中,
·H:表示內容的熱度,
·W:表示內容質量的數值表達,如文章點贊數
·I:表示內容的初始質量,是文章作者的影響因子
·G:重力Gravity,表示的是一個內容變得不再熱門的速度,重力越大,一個內容刷新的越快
·T:事件T
??基于上述公式,事件的熱度定義為文章熱度的和,文章熱度的計算公式由公式(1)變化而得,文章熱度的計算公式如下:
其中,
·H:文章熱度
·L:文章點贊量
·C:文章評論量
·R:文章轉發量
·S:文章爬取時間(Spider Time)
·A:文章時間(Article Time)
·h:表示小時, 表示爬取時間到文章時間的小時數
??故而事件的熱度計算公式為:
4. 系統總體方案確認
4.1 系統總體結構確認
系統總體上由數據來源層、數據采集層、數據處理層、數據存儲層、數據訪問層、數據服務層、數據視圖層七層組成。數據來源層到數據采集層再到數據處理層最后到數據存儲層是一個單向的層次結構。數據存儲層、數據訪問層、數據服務層、數據視圖層各層之間是一個雙向的數據傳遞的層結構。具體見系統架構圖。
4.2 系統詳細界面劃分
略。
5. 系統詳細設計
5.1 系統程序代碼架構設計
??系統程序代碼架構設計主要是輿情分析系統的后臺服務子系統與前端展示子系統的架構設計。輿情分析系統采用采用三層架構模型,分為用戶界面層、業務邏輯層、數據訪問層。代碼的包結構如下:
5.1.1 用戶界面層(User Interface Layer)
??用戶界面層包含前端界面與Controller。前端界面用于與系統用戶交互、提交Http請求并展示輿情分析結果;Collroller 用于處理前端提交的Http請求,并調用業務邏輯層的接口獲取數據并放回數據到前端。
5.1.2 業務邏輯層(Business Logic Layer)
??業務邏輯層是系統代碼的重要部分,承擔了所有的邏輯判斷,實現了程序功能。它被用戶界面層的Controller調用,并調用了數據訪問層的接口以獲取查詢數據。
5.1.3 數據訪問層(Data Access Layer)
??由于系統由MyBatis+ClickHouse實現且系統主要涉及的是輿情分析數據的展示,因此數據訪問層主要是接口加ClickHouse的查詢語句,根據查詢語句查詢ClickHouse獲取結果。
5.1.4 實體類(Entity Class)
??實現對數據的封裝,用戶界面層、業務邏輯層、數據訪問層這三層之間主要就是通過實體類作為參數、返回值進行交互的。
5.2 系統結構設計及子系統劃分
??根據系統需求和功能,輿情分析系統的邏輯結構劃分為分析子系統、后臺子系統、前端子系統、爬蟲子系統等4個子系統,系統下又分各功能模塊,如下圖所示:
5.3 系統功能模塊詳細設計
5.3.1 分析子系統
??在分析子系統中,我們的設計是把爬取到的文章數據通過OdsFlink獲取處理到下游的Kafka Topic中,然后從下游的Topic中獲取上游處理到的數據進行處理分析。
??模塊描述:事件文章分析模塊包括事件文章詳情、事件走勢、事件核心傳播人、事件熱度這幾個部分數據處理部分,并將處理結果存入ClickHouse。
??模塊描述:事件關鍵詞分析模塊處理的是事件所有文章分詞后的詞頻統計結果,統計出事件的關鍵詞存入ClickHouse。
??模塊描述:事件評論分析模塊包括事件評論詳情、事件評論統計(事件評論者性別占比、事件正負面評論占比)三個部分。
??模塊描述:事件關鍵詞分析模塊處理的是事件所有評論分詞后的詞頻統計結果,統計出事件評論的關鍵詞存入ClickHouse。
5.3.2 后臺與前端子系統
模塊描述:用于輿情分析員查看輿情事件、搜索輿情事件、輿情預警
功能描述:
a. 輿情首頁
a) 分類輿情事件熱度
b) 分類輿情熱度趨勢
c) 輿情地域分布圖
b. 輿情預警
a) 輿情事件負面評論預警;
b) 輿情事件負面評論增長預警;
c) 輿情事件熱度增長預警;
c. 輿情事件分析
a) 輿情事件總覽
i. 事件關鍵詞分析
ii. 事件傳播走勢分析
iii. 事件核心傳播人分析
b) 輿情事件文章分析
i. 事件文章點贊、轉發、評論排名
ii. 事件文章熱度排名
iii. 事件文章地域分布
iv. 事件文章時間線
c) 輿情事件評論分析
i. 評論關鍵詞分析
ii. 事件評論者分析
iii. 事件評論情感趨勢分析
iv. 事件評論點贊排名
v. 事件評論回復排名
模塊描述:用于系統管理員配置輿情分析系統涉及的數值;
功能描述:
a. TopN 配置
i. 文章排名 TopN配置
ii. 文章熱度 TopN 配置
iii. 事件高贊與高回復評論 TopN 配置
b. 事件預警閾值配置
i. 事件負面評論占比閾值配置
c. 爬蟲參數配置
i. 爬蟲的任務周期配置(每隔多少次執行爬蟲代碼)
5.3.3 爬蟲子系統
模塊描述:微博輿情數據的爬取。
模塊描述:今日頭條輿情數據的爬取。
5.4 系統用戶界面詳細設計
- 界面的風格:深色的準實時大屏風格
- 界面的內容:
??界面主要分為管理員界面與輿情分析員界面。管理員界面的內容主要就是各種配置界面與系統日志查看界面;輿情分析員的界面內容大致分為四大塊:- 分類輿情總覽頁
- 分類輿情熱度表:表單內容包括事件名、事件熱度、事件類型
- 領域(分類)輿情熱度折線圖
- 輿情地域分布圖
- 輿情事件搜索頁
- 輿情搜索框;
- 輿情事件搜索結果表:表單內容包括事件名、事件熱度、事件類型
- 輿情事件預警頁
- 事件負面評論占比與事件負面評論環比增長率表
- 事件負面評論排名餅圖
- 事件負面評論環比增長率排名餅圖
- 事件熱度與事件熱度增長率表
- 事件熱度增長率橫向柱狀圖
- 輿情事件分析頁
- 輿情事件總覽頁
- 事件關鍵詞詞云圖
- 事件走勢(信息量走勢、關注度走勢)折線圖
- 事件核心傳播人餅圖
- 事件文章分析頁
- 事件文章點贊、評論、轉發排名柱狀圖
- 事件文章熱度排名走馬燈
- 事件文章發展時間線
- 事件評論分析頁
- 事件評論關鍵詞詞云圖
- 事件正負面評論占比趨勢折線圖
- 事件正面、負面、中立評論抽屜
- 事件男女評論占比餅圖
- 事件高贊評論餅圖
- 事件高回復評論餅圖
- 輿情事件總覽頁
- 分類輿情總覽頁
- 界面數據的請求方式:Http請求,包括Get請求與Post請求。
6. 數據庫系統設計
6.1 設計要求
??數據庫系統的設計需要很好的滿足系統的功能性需求與非功能性需求。功能性需求的滿足要求設計恰當的表結構,以支持系統的功能性需求的完成;非功能性需求的滿足主要是系統查詢性能的保證,進而才能保證系統的性能需求。
6.2 數據庫設計
6.2.1 設計依據
- 數據訪問頻度與流量
??由于輿情分析系統為準實時系統,前端每隔30s自動請求后端的大量數據,需要要求數據庫需要有良好的查詢性能,才能保證系統的可用性。 - 數據存儲量
??輿情分析系統存儲的數據可達幾十G甚至幾百G甚至幾千G,因此數據庫需要有非常良好的橫向擴展能力,能夠支持擁有分布式數據庫(數據庫集群)構建。 - 數據增長量
??由于輿情數據每天都以爆炸式增長,輿情分析系統的數據增長量是非常大的,但是我們的數據來源是爬蟲,數據量的增長速度被爬蟲的速度所限制,但是數據的增長量還是非常大的,因此數據庫需要擁有很好的橫向擴展能力。
6.2.2 數據庫種類及特點
??系統采用的數據庫是ClickHouse與ElasticSearch。ClickHouse是一個面向列存儲的OLAP分析數據庫,具有非常優越的分析查詢速度,能夠滿足輿情分析系統的查詢需求,并且支持集群搭建,具有很好的橫向擴展能力;ElasticSearch是分布式的開源搜索與分析引擎,具有領先地位,能夠很好的滿足輿情系統的輿情事件搜索需求。
6.2.3 數據庫邏輯結構
??系統的數據采用ClickHouse表存儲,其表設計見系統架構設計說明書的數據存儲部分。
6.2.4 數據庫安全
??必須通過用戶名與密碼訪問數據庫獲取數據。
6.2.5 數據字典
??無,輿情分析系統目前不需要數據字典。
總結
以上是生活随笔為你收集整理的基于 Flink、ClickHouse 的舆情分析系统:系统详细设计说明书的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 金税盘组件接口调用方法
- 下一篇: 数字图像来源:光学成像系统