做者:Max
zhihu.com/question/293021546/answer/487157602java
把 14 億中國人民都拉到一個微信羣裏在技術上能實現嗎?算法
先說結論:也許能夠實現,但你會什麼都看不見。spring
根據 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 就是啥也幹不了。intellij-idea
幸虧 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 米青龍偃月大關刀......
近期熱文推薦:
1.Java 15 正式發佈, 14 個新特性,刷新你的認知!!
2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!
3.我用 Java 8 寫了一段邏輯,同事直呼看不懂,你試試看。。
以爲不錯,別忘了隨手點贊+轉發哦!