最近一段時間,各大網盤容量大戰紅紅火火,網盤的容量也由此達到了TB級。其實網盤產業一直以來都是互聯網行業中最燒錢的之一。想想現在各大網盤如果真是給每個人都TB級的容量,這個投入是巨大的,其實也是非常不經濟的。那么各大網盤的聰明工程師們是如何從技術上解決BT大容量網盤的發展趨勢和實際網盤資金投入控制這一矛盾的呢?下面這篇文章轉自Fatesinger博客,相信看完后你會有所了解。

事實是這樣的~
我想要為每個用戶提供 1G 的網絡存儲空間。
如果服務器上有一顆 1000G 的硬盤可以全部為用戶提供數據儲存,如果每個用戶分配 1G 的最大儲存空間,那么能非配給多少個用戶使用呢?
你一定說是 1000/1=1000 個用戶。
但事實上你這么分配了,你會發現每個用戶平時根本不會上傳 1G 的東西將容量占的漫漫的,有多又少,但平均用戶平時只上傳 50M 的文件,也就是說,你將 1000G 的硬盤分給 1000個 人使用,但只有效利用了其中的 50M*1000=50G 的空間,剩余 950G 的空間基本都完全浪費了。
那么怎么解決呢?
你可以變通一下,將這 1000G 的空間分配給 20000個 用戶使用,每個人的上傳上限容量還是 1G,但每人平時還是平均上傳 50M 的數據,那么 20000*50M=1000G,這下子就把寶貴的服務器上的存儲空間充分利用了。但你又怕這樣分配給 20000個 人后,萬一某一刻人們突然多上傳點數據,那么用戶不是就覺察出來你分給人家的 1G 空間是假的了嗎?所以可以不分配那么多人,只分配給 19000 人,剩下一些空間做應急之用。
突然發現一下子將可分配的用戶數量翻了 19倍啊,了不起。那還有買有辦法更加有效的利用一下呢?
如果我有 1000個 以上的服務器,一個服務器上有 1000G 空間,那么我們個服務器上都要留下 50G 的空白空間以備用戶突然上傳大數據時導致數據塞滿的情況,呢么我這 1000個服務器上就空出了 1000臺*50G=50000G 的空間被浪費了,所么可惜。所以我們發明了計存儲集群,使得一個用戶的數據可以被分配在多個服務器上存儲,但在用戶那看起來只是一個 1G 的連續空間,那么就沒必要在每個服務器上預留出應急的空間了,甚至可以充分的將前一個服務器塞滿后,在將數據往下一個服務器中塞。這樣保證了服務器空間的最大利用,如果某一刻管理員發現用戶都在瘋狂上傳數據(在一個大規模用戶群下,這樣的概率少之又少)導致我現有提供的空間不夠了,沒關系,只需要隨手加幾塊硬盤或者服務器就解決了。
好吧,這下子我們的服務器空間利用高多了,可以將一定量的空間分配給最多的用戶使用了。但有沒有更好的改進方案呢?
新聞熱點
疑難解答