日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

百亿级全网舆情分析系统存储设计

發布時間:2024/8/1 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百亿级全网舆情分析系统存储设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

百億級全網輿情分析系統存儲設計

前言

在時下互聯網信息的浪潮下,信息的傳播速度遠超我們的想象。 微博里一條大V的帖子,朋友圈的一個狀態更新,熱門論壇的一條新聞, 購物平臺的購物評價,可能會產生數以萬計的轉發,關注,點贊。 如果是一些非理性負面的評論會激發人們的負面感, 甚至影響到消費者對企業品牌的認同,如果不能及時的采取正確的應對措施, 會造成難以估計的損失。所以我們需要一個高效的全網輿情分析系統, 幫助我們實時的觀測輿情。

這個全網輿情分析系統,可以實現百億條網頁數據的存儲、 實時新增網頁的抓取和存儲并能對新增網頁做實時的元數據提取。 有了提取結果,我們還需要進行進一步的挖掘分析,這些分析包括但不限于

  • 輿情的影響力診斷,從傳播量級和擴散趨勢來做預測,確定是否最終形成輿情。
  • 傳播路徑分析,分析輿情傳播的關鍵路徑。
  • 用戶畫像,對輿情的參與者提供共性特征勾勒,如性別,年齡,地域和感興趣話題。
  • 情感分析,分析新聞或者評價是正面還是負面。情感分類后進行統計聚合。
  • 預警設置,我們支持輿情討論量閾值設置,達到閾值后通知推送業務方,避免錯過輿情的黃金參與時間。
  • 這些挖掘后的輿情結果會被推送至需求方,同時也提供接口給各業務方搜索,查詢使用。 下面我們就展開討論系統設計中可能會遇到的問題, 我們會重點關注系統設計中存儲相關的話題, 針對這些問題找到一個最優化的方案。

    系統設計

    對于一個輿情系統,首先需要一個爬蟲引擎,去采集各大主流門戶,購物網站, 社區論壇原始頁面內容,微博,朋友圈的各類消息信息。 采集到的海量網頁,消息數據(百億級別)需要實時存儲下來。 再根據網站url獲取網頁之前還需要判斷一下是否是之前爬過的頁面,避免不必要的重復爬取。 采集網頁后我們需要對網頁進行萃取,去除不必要的標簽, 提取標題,摘要,正文內容,評論等。萃取后的內容進入存儲系統方便后續查詢, 同時還需要把新增的抽取結果推送至計算平臺進行統計分析, 出報表,或者后續提供輿情檢索等功能。 計算的內容根據算法不同可能需要新增數據,也可能需要全量數據。 而輿情本身的時效敏感性決定了我們系統一定要能高效處理這些新增內容, 最好是秒級別延時后就可以檢索到新熱搜。

    我們可以總結下整個數據流如下:

    根據上圖我們不難發現,設計一個全網輿情的存儲分析平臺, 我們需要處理好抓取,存儲,分析,搜索和展示。

    具體我們需要解決如下問題:

  • 如何高效存儲百億級別的網頁原始信息,為了提高輿情分析的全面性,準確性, 我們往往希望可以盡可能多的爬取網頁信息,再根據我們設置的權重聚合。 所以網頁的歷史全庫會比較大,積累數百億的網頁信息,數據量可以達到百TB甚至數PB。 在數據量如此之大的情況下,我們還需要做到讀寫毫秒級別的低延時, 這使得傳統數據庫難以滿足需求。
  • 如何在爬蟲爬取網頁之前判斷是否之前已經爬取過, 針對普通網頁,輿情在意他們的時效性,可能我們對同一個網頁只希望爬取一次, 那我們就可以利用網頁地址做爬取前去重,減少不必要的網頁資源浪費。 所以我們需要分布式存儲提供基于網頁的高效隨機查詢。
  • 如何新增原始網頁存儲完成后進行實時的結構化提取,并存儲提取結果。 這里我們原始的網頁可能是包括各種html的標簽,我們需要去除這些html的標簽, 提取出文章的標題,作者,發布時間等。 這些內容為后續輿情情感分析提供必要的結構化數據。
  • 如何高效的對接計算平臺,流式新增提取后的結構化數據進行實時的計算。 這里我們需要根據網頁,消息描述的內容做分類,進行情感識別,識別后的結果統計分析。 由于全量分析時效性差,加上輿情往往關注最新的新聞,評論,所以我們必須做增量分析。
  • 如何提供高效的輿情搜索,用戶除了訂閱固定關鍵詞的輿情以外,做一些關鍵詞搜索。 例如希望了解競爭公司新產品的一些輿情分析。
  • 如何實現新增輿情的實時推送,為了保證輿情的時效性,我們不僅需要持久化輿情分析結果, 同時也要支持推送輿情結果。推送的內容通常是我們實時分析出來的新增輿情。
  • 系統架構

    針對上面介紹這些問題, 我們下面來介紹下如何基于阿里云上的各類云產品來打造全網百億級別的輿情分析平臺, 我們會重點關注存儲產品的選型和如何高效的對接各類計算,搜索平臺。

    爬蟲引擎我們選用ECS,可以根據爬取量決定使用ECS的機器資源數, 在每天波峰的時候也可以臨時擴容資源進行網頁爬取。 原始網頁爬取下來后,原始網頁地址,網頁內容寫入存儲系統。 同時如果想避免重復爬取,爬蟲引擎抓取之前要根據url列表進行去重。 存儲引擎需要支持低延時的隨機訪問查詢,確定當前url是否已經存在, 如果存在則無需重復抓取。

    為了實現網頁原始內容的實時抽取,我們需要把新增頁面推送至計算平臺。 之前的架構往往需要做應用層的雙寫,即原始網頁數據入庫同時, 我們重復寫入一份數據進入計算平臺。這樣的架構會需要我們維護兩套寫入邏輯。 同樣的在結構化增量進入輿情分析平臺中,也有類似的問題, 抽取后的結構化元數據也需要雙寫進入輿情分析平臺。 輿情的分析結果也需要一份寫入分布式存儲,一份推送至搜索平臺。 到這里我們可以發現,圖中的三根紅線會帶來我們對三個數據源的雙寫要求。 這會加大代碼開發工作量,也會導致系統實現,維護變的復雜。 每一個數據源的雙寫需要感知到下游的存在,或者使用消息服務,通過雙寫消息來做解耦。 傳統數據庫例如mysql支持訂閱增量日志binlog,如果分布式存儲產品在可以支撐較大訪問, 存儲量的同時也可以提供增量訂閱就可以很好的簡化我們的架構。

    網頁數據采集入庫后,增量流入我們的計算平臺做實時的元數據抽取, 這里我們可以選用函數計算,當有新增頁面需要提取時觸發函數計算的托管函數進行網頁元數據抽取。 抽取后的結果進入存儲系統持久化后,同時推送至MaxCompute進行輿情分析,例如情感分析,文本聚類等。 這里可能會產生一些輿情報表數據,用戶情感數據統計等結果。 輿情結果會寫入存儲系統和搜索引擎,部分報表, 閾值報警會被推送給訂閱方。 搜索引擎的數據提供給在線輿情檢索系統使用。

    在介紹完整體架構后,下面我們看下在阿里云上如何做存儲選型。

    存儲選型

    通過架構介紹我們再總結一下對存儲選型的要求:

  • 可以支撐海量數據存儲(TB/PB級別), 高并發訪問(十萬TPS~千萬TPS),訪問延時低。
  • 業務隨著采集訂閱的網頁源調整,采集量會動態調整。 同時一天內,不同時間段爬蟲爬下來的網頁數也會有明顯波峰波谷, 所以數據庫需要可以彈性擴展,縮容。
  • 自由的表屬性結構,普通網頁和社交類平臺頁面的信息我們需要關注的屬性可能會有較大區別。 靈活的schema會方便我們做擴展。
  • 對老數據可以選擇自動過期或者分層存儲。 因為輿情數據往往關注近期熱點,老的數據訪問頻率較低。
  • 需要有較好的增量通道,可以定期把新增的數據導出至計算平臺。 上面的圖中有三段紅色虛線, 這三部分都有個共同的特點需要可以實時的把增量導至對應的計算平臺做計算, 計算后的結果再寫入對應的存儲引擎。如果數據庫引擎本身就支持增量,則可以很大程度簡化架構, 減少之前需要全量讀區篩選增量,或者客戶端雙寫來實現得到增量的邏輯。
  • 需要可以有較好的搜索解決方案(本身支持或者可以數據無縫對接搜索引擎)。
  • 有了這些需求后,我們需要使用一款分布式的NoSQL數據來解決海量數據的存儲,訪問。 多個環節的增量數據訪問的需求, 業務的峰值訪問波動進一步確定彈性計費的表格存儲是我們在這套架構中的最佳選擇。 表格存儲的架構介紹可以參考?表格存儲數據模型

    TableStore(表格存儲)相比同類數據庫一個很大的功能優勢就是TableStore(表格存儲)有較完善的增量接口, 即Stream增量API,Stream的介紹可以參考?表格存儲Stream概述。 場景介紹可以參考?Stream應用場景介紹, 具體API使用可以參考?JAVA SDK Stream。 有了Stream接口,我們可以很方便的訂閱TableStore(表格存儲)的所有修改操作,也就是新增的各類數據。 同時我們基于Stream打造了很多數據通道,對接各類下游計算產品, 用戶甚至不需要直接調用Stream API,使用我們的通道直接在下游訂閱增量數據, 自然的接入了整個阿里云的計算生態。 針對上面架構中提到的函數計算,MaxCompute,ElasticSearch和DataV, TableStore(表格存儲)都已經支持,具體使用可以參考:

  • Stream和函數計算對接
  • Stream和MaxCompute
  • Stream和Elasticsearch
  • 通過DataV展示表格存儲的數據
  • TableStore(表格存儲)在屬性列上,是自由的表結構。 針對輿情分析這個場景,隨著輿情分析算法的升級我們可能會新增屬性字段, 同時針對普通網頁和微博這類社交頁面的屬性也可能不盡相同。 所以自由表結構相比傳統數據庫可以很好的匹配我們這個需求。

    在架構中,我們有三個存儲庫需求。分別是原始頁面庫, 結構化元數據庫和輿情結果庫。前兩者一般是一個離線存儲分析庫, 最后一個是一個在線數據庫。他們對訪問性能,存儲成本有著不同的需求。 表格存儲有兩種類型的實例類型支持存儲分層,即高性能和容量型。 高性能適用于寫多讀多的場景也就是做為在線業務存儲使用。 容量型適合寫多讀少的場景,也就是離線業務存儲用。 他們的寫入單行延時都可以控制在10毫秒內,讀取高性能可以保持在毫秒級別。 TableStore(表格存儲)同時支持TTL,設置表級別數據過期時間。 根據需求,輿情結果我們可以設置TTL,只提供近期數據的查詢, 較老的輿情自動過期刪除。

    有了TableStore(表格存儲)的這些功能特性,系統對存儲選型的六項要求就可以得到很好的滿足, 基于TableStore(表格存儲)可以完美的設計和實現全網輿情存儲分析系統。

    后記

    本文對實現海量數據輿情分析這一場景中會遇到的存儲和分析問題進行了總結, 介紹了如何通過使用阿里云自研的TableStore(表格存儲)在滿足業務基本數據量的前提下, 通過Stream接口和計算平臺的對接實現架構簡化。T ableStore(表格存儲)是阿里云自主研發的專業級分布式NoSQL數據庫, 是基于共享存儲的高性能、低成本、易擴展、全托管的半結構化數據存儲平臺, 輿情數據存儲分析是TableStore在大數據處理領域的重要應用之一。 其他場景使用可以參考?TableStore進階之路。

    總結

    以上是生活随笔為你收集整理的百亿级全网舆情分析系统存储设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。