就以悟空問答為例說說大數據的故事。以下說的數字都不是真實的,都是我的假設。
比如每天都有1億的用戶在悟空問答上回答問題或者閱讀問答。
每天產生的內容假設平均有1000萬的用戶每天回答一個問題。一個問題平均有1000的字, 平均一個漢字占2個字節byte,三張圖片, 平均一帳圖片300KB。那么一天的數據量就是:
文字總量:10,000,000 * 1,000 * 2 B = 20 GB
圖片總量: 10,000,000 * 3 * 300KB = 9 TB
為了收集用戶行為,所有的進出悟空問答頁面的用戶。點擊,查詢,停留,點贊,轉發,收藏都會產生一條記錄存儲下來。這個量級更大。
所以粗略估計一天20TB的數據量. 一般的PC電腦配置大概1TB,一天就需要20臺PC的存儲。
如果一個月的,一年的數據可以算一下有多少。傳統的數據庫系統在量上就很難做到。
另外這些數據都是文檔類型的數據。需要各種不同的存儲系統支持,比如NoSQL數據庫。
需要分布式數據存儲,比如Hadoop的HDFS。
數據的流動上述1000萬個答案,會有1億的人閱讀。提供服務的系統成百上千。這些數據需要在網上各個系統間來回傳播。需要消息系統比如Kafka。
在線用戶量同時在線的用戶量在高峰時可能達到幾千萬。如此高的訪問量需要數前臺服務器同時提供一致的服務。為了給用戶提供秒級的服務體現,需要加緩存系統比如redis。
機器學習,智能推薦所有的內容包括圖片都會還用來機器學習的分析,從而得到每個用戶的喜好,給用戶推薦合適的內容和廣告。還有如此大量的數據,必須實時的分析,審核,審核通過才能發布,人工審核肯定做不到,必須利用機器來智能分析,需要模式識別,機器學習,深度學習。實時計算需要Spark,Flink等流式計算技術。
服務器的管理幾千臺服務器,協同工作。網絡和硬件會經常出問題。這么多的資源能夠得到有效利用需要利用云計算技術,K8S等容器管理工具。還需要分布式系統的可靠性和容災技術。
本人,@小馬過河Vizit,專注于分布式系統原理和實踐分享。希望利用動畫生動而又準確的演示抽象的原理。歡迎關注。
關于我的名字。小馬過河Vizit,意為凡事像小馬過河一樣,需要自己親自嘗試,探索才能獲得樂趣和新知。Vizit是指Visualize it的縮寫。一圖勝千言,希望可以利用動畫來可視化一些抽象的原理。