“今天,在知乎上看到一個非常有意思的的問題:
“把 14 億中國人民都拉到一個微信群裡在技術上能實現嗎?”
參考:https://www.zhihu.com/question/293021546/answer/487157602
經常使用微信的朋友應該都知道,微信群組成員人數上限為 500 人,把近 14 億中國人都拉到一個微信群,從技術的角度考慮現實嗎?需要多少臺服務器?
由於這個問題的熱度很高
引來了騰訊官方的回答:
先說結論:也許可以實現,但你會什麼都看不見。
根據2017年《微信數據報告》的公開數據[參考1]
2017年9月,微信日均登陸9.02億人,日均發送消息380億次
這意味著平均每人每天發送信息
42條,如果全國人民(對了,現在全國人口已經接近14億)在同一個群裡說話,這個群每天出現的信息就高達這麼多信息僅僅是勻速發送的話,考慮到大家的睡眠,睡覺的8小時不算,那麼手機裡每秒要接收的信息就是
哇塞,每秒超過100萬條啊!目前主頻最高的手機CPU之一,高通驍龍845有2.8GHz的處理能力[參考2] ,一共是8核,如不計算安卓系統、顯示刷新、網絡IO等CPU操作的話,
每條信息能分配到的計算能力是
這是什麼概念?全球第一款微處理器是1971年英特爾推出的Intel 4004[參考3],這個老古董的主頻也有108KHz啊。所以21.9KHz就是啥也幹不了。
幸好IT界有個摩爾定律:每18個月CPU性能就能翻倍(或者價錢是一半)。雖然現有科技已經很難讓主頻提升(某牙膏廠拼命擠也只有5Ghz)。
但假設我們使用了黑科技提升主頻。等到了2025摩爾定律失效時[參考4],我們的手機CPU主頻應該達到
看起來不錯嘛,不過每條消息能得到的計算能力將達到:
呵呵,依然沒有達到Intel 4004的水平,所以結果就是你等了7年,還是進不了這個全國群搶一個紅包。
好吧,咱們讓手機接入一個給力點的電腦, 比如說全球超算第一名的太湖之光,1千萬個CPU核心[參考5]來幫忙處理這個宇宙第一大微信群。算力的問題總算有了著落。
我們假設平均每條消息有10個漢字,這大概相當於30 byte,算上應用層會加上一定的控制字符,再加上TCP/IP網絡層的數據消耗大概是74 byte,取個整,平均每條消息有100 byte,每個byte 相當於8個bit。
這時每秒需要的網絡帶寬大約是
如果有人發紅包,需要的帶寬就更大了。
理論上,4G網絡能支持1000Mbps[參考6],但別忘了,是全國人民在同一個群裡,而你周圍的人也需要同樣的帶寬,這使得你附近的基站不堪重負,陷入癱瘓。
為了避免網絡癱瘓導致你搶不到紅包或者看群消息,你需要搬到一個周圍沒有人的基站,比如放暑假了全校只有你還沒回家的時候。
不過運營商的日子就不好過了,因為這一秒全國上下的流量就達到了驚人的:
這相當於2017 4月份的全國移動數據總流量的65.7%[參考7],意味著每18秒就能用完全國一年的流量 。運營商瑟瑟發抖.gif
如果把1.146Ebit數據用2TByte 3.5英寸硬盤(20mm高)裝起來,然後疊起來,有1433.25m,相比之下,全球最高樓——迪拜的哈里發塔只有區區828m。
當然,如果確實有需要,我相信電信運營商們肯定砸下重金為你建設全世界最大的寬帶網絡。
不過,接下來該花錢的就不是運營商——而是騰訊了。
為了處理這1.146Ebps 的流量, 騰訊需要準備11466萬套交換機和服務器。
目前一臺大廠4口萬兆交換機售價大約是4000元,一臺便宜帶萬兆口的服務器則大概需要10000元,這兩項加起來的費用是:
呃,僅僅這兩項就相當於深圳2014年全年的GDP[參考8]。
這裡還不包括網線、電線、服務器機架、機房託管、電費、運行支出……
這麼多設備的存放也是個問題。一臺帶萬兆(10Gbps)口的2U服務器有88.9mm高,這樣疊起來就有
這差不多是中國到美國的飛機航線距離啊,用來修鐵路也是夠夠的了
好了,有了這麼多設備加持,這下你終於可以愉快地進了群。
但你驚訝地發現,屏幕上除了白色,什麼都沒有——
這是因為你的眼睛沒辦法接收這麼快的數據!
人眼的視覺暫留時間是100-400毫秒[參考9] ,而我們這個群每秒鐘就要顯示102萬條信息,每條消息停留的時間只有大概0.001毫秒。相比之下,電影、電視都有41毫秒。
因此你還沒來得及看清消息,它就已經消失了,最後只留下一團白色的色塊在屏幕的正中央。
好了,暫且到這裡為止!你任務把 14 億中國人民都拉到一個微信群裡在技術上能實現嗎?我們評論區見!
結尾
最後多說一句,小編是一名python開發工程師,這裡有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,並在後臺私信小編:“01”即可領取。
閱讀更多 Python之眼 的文章