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