把 14 億中國人都拉到一個微信群在技術上能實現嗎?

LonelyKeyGuest發表於2019-02-02

閱讀本文大概需要 2.8 分鐘。

作者:Max  來源:騰訊知乎官號 

www.zhihu.com/question/293021546/answer/487157602

“最近,知乎上有一個非常熱門的問題:“把 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 效能就能翻倍(或者價錢是一半)。雖然現有科技已經很難讓主頻提升(某牙膏廠拼命擠也只有 5 Ghz)。

但假設我們使用了黑科技提升主頻。等到了 2025 摩爾定律失效時[參考 4],我們的手機 CPU 主頻應該達到:

 

看起來不錯嘛,不過每條訊息能得到的計算能力將達到:

 

呵呵,依然沒有達到 Intel 4004 的水平,所以結果就是你等了 7 年,還是進不了這個全國群搶一個紅包。

 

好吧,我們們讓手機接入一個給力點的電腦, 比如說全球超算第一名的太湖之光,1 千萬個 CPU 核心 [參考 5] 來幫忙處理這個宇宙第一大微信群。算力的問題總算有了著落。

我們假設平均每條訊息有 10 個漢字,這大概相當於 30 byte,算上應用層會加上一定的控制字元,再加上 TCP/IP 網路層的資料消耗大概是 74 byte,取個整,平均每條訊息有 100 byte,每個 byte 相當於 8 個 bit。

這時每秒需要的網路頻寬大約是:

 

如果有人發紅包,需要的頻寬就更大了。

理論上,4G 網路能支援 1000 Mbps[參考 6],但別忘了,是全國人民在同一個群裡,而你周圍的人也需要同樣的頻寬,這使得你附近的基站不堪重負,陷入癱瘓。

為了避免網路癱瘓導致你搶不到紅包或者看群訊息,你需要搬到一個周圍沒有人的基站,比如放暑假了全校只有你還沒回家的時候。

 

不過運營商的日子就不好過了,因為這一秒全國上下的流量就達到了驚人的:

 

這相當於 2017 年 4 月份的全國移動資料總流量的 65.7%[參考 7],意味著每 18 秒就能用完全國一年的流量。運營商瑟瑟發抖.gif

如果把 1.146 Ebit 資料用 2TByte 3.5 英寸硬碟(20 mm 高)裝起來,然後疊起來,有 1433.25 m,相比之下,全球最高樓——杜拜的哈里發塔只有區區 828m。

 

當然,如果確實有需要,我相信電信運營商們肯定砸下重金為你建設全世界最大的寬頻網路。

不過,接下來該花錢的就不是運營商——而是騰訊了。

為了處理這 1.146 Ebps 的流量, 騰訊需要準備 11466 萬套交換機和伺服器。

目前一臺大廠 4 口萬兆交換機售價大約是 4000 元,一臺便宜帶萬兆口的伺服器則大概需要 10000 元,這兩項加起來的費用是:

 

呃,僅僅這兩項就相當於 深圳 2014 年全年的 GDP[參考 8]。

這裡還不包括網線、電線、伺服器機架、機房託管、電費、執行支出……

這麼多裝置的存放也是個問題。一臺帶萬兆(10Gbps)口的 2U 伺服器有 88.9 mm 高,這樣疊起來就有:

 

這差不多是中國到美國的飛機航線距離啊,用來修鐵路也是夠夠的了。

 

好了,有了這麼多裝置加持,這下你終於可以愉快地進了群。

但你驚訝地發現,螢幕上除了白色,什麼都沒有——這是因為你的眼睛沒辦法接收這麼快的資料!

人眼的視覺暫留時間是 100-400 毫秒[參考 9] ,而我們這個群每秒鐘就要顯示 102 萬條資訊,每條訊息停留的時間只有大概 0.001 毫秒。相比之下,電影、電視都有 41 毫秒。

因此你還沒來得及看清訊息,它就已經消失了,最後只留下一團白色的色塊在螢幕的正中央。

 

小編精選了一些網友留言:

@大哥有柔情:

14 億在一個群並不可怕。可怕的是,每逢節日群裡都會讓群主發紅包!

@後知後覺:

已經做到了,14 億人拉到一個微信群,大家看到的都是新聞聯播。

@bluecat:

簡單的說,你的手機會馬上崩潰,因為它承載不了一秒鐘的資訊量。

@三毛魚

可以實現,不過要加幾條限制:

①所有微信賬號強制加入到這個微信群。

②微信群只能有限的幾個人發言,其他人不能發言。

③微信群裡只能在每天固定時間段發訊息。

④其他微信群在固定時間不能發訊息,或者只能轉發這個微信群的訊息。

這樣就可以實現了,技術上沒有難度。

 

@程墨Morgan

“拉”到一個群裡沒啥不難實現的,反正使用者資訊都在伺服器上,建一個包含所有使用者微訊號的群也就是新增一個記錄而已。

但是,這個群千萬不要讓任何人都能發言,就以我國人民的多樣性,各種話嘮、貼圖狂人、廣告狂人......海量資訊瞬間就可以把伺服器、運營商網路和你手機的電池擊潰。

@世安先生

講真,單從理論上來說目前的技術還是可行的,咳咳,我要裝逼了。

看了別的答主的回答,說人、終端、傳輸、處理、儲存、分析等等各方面均有缺陷或者短板,跟不上大批量的資料,其實個人覺得實施起來也還是有得搞的,只是成本和利潤之間的關係罷了。

首先,得考慮人的因素,多少多少億的資訊量對於某個特定個體來說價值無限接近於 0,我個人根本不關注這些資訊,因為獲取資訊的效率太低了。

這就導致了百分之九十九的人直接忽略了這個群的存在,剩下的每天這個群裡的訊息無非就是置頂公告,置頂新聞,紅包和閒聊鬥圖,瀏覽公告和新聞。

考慮到併發的問題,一般現在的伺服器都可以做到,畢竟有大把的新聞 App 都可以做到;紅包,做個演算法隨機分配吧,也別搶了,搶會嚴重影響體驗,給十億使用者隨機分配一段資料應該難度也不太大。

剩下的就是鬥圖閒聊,資料直接雲端儲存在伺服器端,分析處理總結出來個中心思想每多少秒多少秒推送給個人使用者一次,就差不多了,需要詳細資訊的上伺服器檢索,個人覺得對個人終端的壓力也不會太大。

其次,傳輸,這是我覺得問題最小的一個環節,為什麼呢?解決了個人終端的問題之後,個人的資料傳輸量並不大,現有的傳輸網路完全可以滿足。

伺服器端的傳輸,要看這伺服器怎麼個建法,如果集中式處理和儲存,就只能用百 G 專線,建個三五條完全夠了。

只不過相應的配套交換機路由器要建一套龐大的系統出來。如果是分散式儲存和處理,10G 的甚至 GE 的專線都夠。這是傳輸。

第三,處理,如果非得把大批量的資料集中處理,就得建設一套國內最大甚至世界最大最複雜的資料中心才能夠承載這套系統。

但是如果分散式處理的話,我相信現在的系統也夠用,畢竟現有的運算量已經這麼大了,而有這個群之後資料量也絕對不會爆炸式增長。

第四,儲存,處理的工作能夠完成儲存肯定也不是問題,甚至可以將資料破碎後儲存在個人終端上,將投資裝置的矛盾轉嫁到資料安全和管理上。

第五,資料分析,這一點才是重中之重,難點中的難點,如何有效的分析提取如此大量資料中的有用資訊並推送給特定的個人才是核心關鍵。

雖然現在技術還沒有大面積商業化,但我相信這種技術是肯定已經有試用的甚至是已經商用的存在了,只不過公眾不太清楚而已,畢竟這種東西仔細想想還是有點恐怖的。

總之,如何實現這個系統或者說建好這個群,無非就是做好需求與資源之間矛盾的轉嫁,把儲存需求量大與投資大之間的矛盾轉嫁到資料安全與運營管理上,把大資料量傳輸分散化,把大量的資料進行分析提取後定向推送,最核心的投資也就是整套智慧有效的大資料分析系統。

 

(ಥ_ಥ)不過……話說這麼搞的話不就是搞了個有 14 億關注量的公眾號嘛…d(ŐдŐ๑)好了,我裝逼裝完了,你們打的時候下手輕點,別拿磚頭,別提 40 米青龍偃月大關刀......

 

 


往期精彩回顧

Bing掛了!百度又“贏了”

遇到賣茶女,應該如何優雅的回覆她

我被程式設計師坑了600萬致公司倒閉,當事人逐條反駁:這鍋我不背

房東:你敢申報,我就漲房租!京東取消年終獎

請不要嘗試簡化這些程式碼

首例"FQ"被罰!廣東警方對“FQ”上網者重罰

一千行MySQL詳細學習筆記(值得學習與收藏)

七點建議助您寫出優雅的Java程式碼

在Java中如何優雅地判空

Java爬取並下載酷狗TOP500歌曲

程式設計師們,別再學習框架了

專科程式設計師與本科程式設計師之間有什麼區別

相關文章