後臺總有些腦洞大的朋友向我們提出奇奇奇怪的問題,比如前兩天就有人問——
“把 13 億中國人民都拉到一個微信群裡在技術上能實現嗎?”……
聽到這個問題,全廠的人都炸了。要知道一個微信群最多隻能有500人啊,QQ群也只有2000而已。當你有機會加入一個2000人QQ群的時候,你就已經感受到“信息爆炸”的可怕……
13億人的微信群?Are you sure?
然鵝,鵝廠的工程師們的藝高人膽大,居然有人跳出來認認真真地做了回答。喏,就是下面這位開發小哥哥,他給出了一個知乎萬贊的回答,請好好欣賞他的靈魂作畫!
先說結論:也許可以實現,但你會什麼都看不見。
根據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年,還是進不了這個全國群搶一個紅包。
好吧,咱們讓手機接入一個給力點的電腦, 比如說曾經全球超算第一名的太湖之光[參考5],用他的1千萬個CPU核心來幫忙處理這個宇宙第一大微信群。算力的問題算是有了著落。
我們假設平均每條消息有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.0001毫秒。相比之下,電影、電視都有41毫秒。
因此你還沒來得及看清消息,它就已經消失了,最後只留下一團白色的色塊在屏幕的正中央。