金年会 金字招牌诚信至上,金年会 金字招牌诚信至上,金年会 金字招牌诚信至上,金年会 金字招牌诚信至上

 找回密碼
 注冊

QQ登錄

只需一步,快速開(kāi)始

查看: 1143|回復: 0
打印 上一主題 下一主題

百度是如何給每個(gè)人免費提供2TB存儲空間的?

跳轉到指定樓層
1#
sonic777 發(fā)表于 2014-4-28 11:52:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式 來(lái)自 中國廣東江門(mén)

馬上注冊,結交更多好友,享用更多功能。

您需要 登錄 才可以下載或查看,沒(méi)有帳號?注冊

x
前段時(shí)間在使用百度網(wǎng)盤(pán)時(shí),突然發(fā)現百度網(wǎng)盤(pán)可以免費領(lǐng)取 2TB 空間啦!

網(wǎng)絡(luò )硬盤(pán)大家可能都或多或少的接觸過(guò),不得不說(shuō)在萬(wàn)物皆云的時(shí)代里,這是一種非常好的網(wǎng)絡(luò )工具,而對我們這種窮到掉渣的免費用戶(hù)來(lái)說(shuō),硬盤(pán)空間簡(jiǎn)直就是硬傷,剛開(kāi)始使用的時(shí)候真是為了空間,各種折騰(做他那里所謂的任務(wù)),到頭來(lái)也才擴充了5G左右,F在好了,隨隨便便、輕輕松松就有了2T的空間。

而這突如其來(lái)的2T空間是如何實(shí)現的呢?

事實(shí)是這樣滴!

假如我想要為每個(gè)用戶(hù)提供 1G 的網(wǎng)絡(luò )存儲空間。

如果服務(wù)器上有一顆 1000G 的硬盤(pán)可以全部為用戶(hù)提供數據儲存,如果每個(gè)用戶(hù)分配 1G 的最大儲存空間,那么能分配給多少個(gè)用戶(hù)使用呢?

你一定說(shuō)是 1000/1=1000 個(gè)用戶(hù)。

但是事實(shí)上你這么分配了,你會(huì )發(fā)現每個(gè)用戶(hù)平時(shí)根本不會(huì )上傳 1G 的東西將容量占的滿(mǎn)滿(mǎn)的,有多有少,但平均用戶(hù)平時(shí)只上傳 50M 的文件,也就是說(shuō),如果你將 1000G 的硬盤(pán)分給 1000個(gè)人使用,但只有效利用了其中的 50M*1000=50G 的空間,剩余 950G 的空間基本都完全浪費了。

那么怎么解決呢?

你可以變通一下,將這 1000G 的空間分配給 20000個(gè)用戶(hù)使用,每個(gè)人的上傳上限容量還是1G,但每人平時(shí)還是平均上傳 50M 的數據,那么 20000*50M=1000G,這下子就把寶貴的服務(wù)器上的存儲空間充分利用了。但你又怕這樣分配給 20000個(gè)人后,萬(wàn)一某一刻人們突然多上傳點(diǎn)數據,那么用戶(hù)不是就覺(jué)察出來(lái)你分給人家的 1G 空間是假的了嗎?所以可以不分配那么多人,只分配給 19000 人,剩下一些空間做應急之用。

突然發(fā)現一下子將可分配的用戶(hù)數量翻了 19倍啊,了不起。那還有沒(méi)有辦法更加有效的利用一下呢?

如果我有 1000個(gè) 以上的服務(wù)器,一個(gè)服務(wù)器上有 1000G 空間,那么我們每個(gè)服務(wù)器上都要留下 50G 的空白空間以備用戶(hù)突然上傳大數據時(shí)導致數據塞滿(mǎn)的情況,那么我這 1000個(gè)服務(wù)器上就空出了 1000臺*50G=50000G 的空間被浪費了,多么可惜。所以攻城獅們發(fā)明了存儲集群,使得一個(gè)用戶(hù)的數據可以被分配在多個(gè)服務(wù)器上存儲,但在用戶(hù)那看起來(lái)只是一個(gè) 1G 的連續空間,那么就沒(méi)必要在每個(gè)服務(wù)器上預留出應急的空間了,甚至可以充分的將前一個(gè)服務(wù)器塞滿(mǎn)后,在將數據往下一個(gè)服務(wù)器中塞。這樣保證了服務(wù)器空間的 最大利用,如果某一刻管理員發(fā)現用戶(hù)都在瘋狂上傳數據(在一個(gè)大規模用戶(hù)群下,這樣的概率少之又少)導致我現有提供的空間不夠了,沒(méi)關(guān)系,只需要隨手加幾塊硬盤(pán)或者服務(wù)器就解決了。

好吧,這下子我們的服務(wù)器空間利用高多了,可以將一定量的空間分配給最多的用戶(hù)使用了。但有沒(méi)有更好的改進(jìn)方案呢?

管理員有一天發(fā)現,即使每個(gè)用戶(hù)平均下來(lái)只存儲 50M 的東西,但這 50M 也不是一蹴而就的,是隨著(zhù)1-2年的使用慢慢的達到這個(gè)數量的,也就是說(shuō),一個(gè)新的用戶(hù)剛剛注冊我的網(wǎng)絡(luò )空間時(shí),不會(huì )上傳東西,或者只上傳一點(diǎn)非常小的東西。那么我為每一個(gè)用戶(hù)都初始分配了 50M 的空間,即使將來(lái)2年后他們會(huì )填滿(mǎn)這 50M ,但這期間的這空間就有很多是浪費的啊。所以聰明的攻城獅說(shuō):既然我們可以分布式、集群式存儲,一個(gè)用戶(hù)的數據可以分布在多個(gè)服務(wù)器上,那么我們就假設一開(kāi)始就給一個(gè)新注冊的用戶(hù)提供 0M 的空間,將來(lái)他用多少,我就給他提供多少存儲空間,這樣就徹底的保證硬盤(pán)的利用了。但用戶(hù)的前端還是要顯示 1G 的。

工程師的這個(gè)點(diǎn)子,使得我在建立網(wǎng)盤(pán)初期能用 1臺 1000G 的服務(wù)器提供了大約 1000000 人來(lái)注冊和使用,隨著(zhù)注冊的人多了,我也有錢(qián)了,也可以不斷增加服務(wù)器以提供他們后期的存儲了。同時(shí)因為一部分服務(wù)器完成了一年多購買(mǎi),我的購買(mǎi)成本也下來(lái)了。

那么…這就結束了嗎?

若是郵箱提供商的話(huà),這樣的利用率夠高了。但網(wǎng)盤(pán)就不一樣了。

聰明的工程師發(fā)現:不同于郵箱,大家的內容和附件絕大多數都是自創(chuàng )的和不同的。但網(wǎng)盤(pán)上大家上傳的東西很多都是重復的。

比如:張三今天下載了一部《TOKYO HOT》上傳到了自己的網(wǎng)盤(pán)上,李四在三天后也下載了一模一樣的《TOKYO HOT》上傳到了網(wǎng)絡(luò )硬盤(pán)上,隨著(zhù)用戶(hù)的增多,你會(huì )發(fā)現總共有 1000個(gè)人上傳了1000份一模一樣的文件到你寶貴的服務(wù)器空間上,所以工程師想出一個(gè)辦法,既然是一樣的文件,我就只存一份不久好啦,然后在用戶(hù)的前端顯示是沒(méi)人都有一份不久行啦。當某些用戶(hù)要刪除這個(gè)文件的時(shí)候,我并不真的刪除,只需要在前端顯示似乎刪除了,但后端一直保留著(zhù)以供其他擁有此文件的用戶(hù)下載。直到所有使用此文件的用戶(hù)都刪除了這個(gè)文件我再真的將其刪除吧。

這樣子隨著(zhù)存儲的數據越來(lái)越多,注冊的用戶(hù)越來(lái)越多,其上傳的重復數據越來(lái)越多。你發(fā)現這樣的檢測重復文件存儲的效率越來(lái)越大。這樣算下來(lái)似乎每個(gè)人上傳的不重復的文件只能平均 1M/用戶(hù)。這下子你可以提供超過(guò)50倍的用戶(hù)使用您這有限的空間了。

但伴隨著(zhù)使用,你又發(fā)現一個(gè)規律:

張三上傳的《TOKYO HOT N0124》和李四上傳的《TH n124》是同一個(gè)文件,只不過(guò)文件名不一樣,難道我就不能識別出他們是一個(gè)文件,然后只將其分別給不同的用戶(hù)保存成不同的文件名不就行啦?確實(shí)可行,但這要利用一些識別文件相同性的算法,例如MD5值等。只要兩個(gè)文件的 MD5 值一樣,文件大小一樣,我就認為它們是相同的文件,只需要保存一份文件并給不同的用戶(hù)記作不同的文件名就好了。

有一天你發(fā)現,因為每一個(gè)文件都需要計算 MD5 值,導致 CPU 負荷很大,而且本來(lái)一樣的文件非要浪費帶寬上傳回來(lái)才可以檢測一致性,能改進(jìn)一下嗎?

聰明的工程師寫(xiě)了個(gè)小軟件或小插件,美其名曰“上傳控件”,將計算 MD5 的工作利用這個(gè)軟件交給了上傳用戶(hù)的電腦來(lái)完成,一旦計算出用戶(hù)要上傳的數據和服務(wù)器上已經(jīng)存儲的某個(gè)數據是一樣的,就干脆不用上傳了,直接在用戶(hù)那里標記上這個(gè)文件已經(jīng)按照 XX 文件名上傳成功了。這個(gè)過(guò)程幾乎是瞬間搞定了,并給其起了個(gè)高富帥的名字“秒傳”!

通過(guò)以上這么多步驟,你發(fā)現本來(lái)你只能給 1000用戶(hù) 提供網(wǎng)絡(luò )空間的,這么多改進(jìn)辦法后,在用戶(hù)端顯示 1G 空間不變的情況下,近乎可以為 1000000個(gè)用戶(hù) 提供網(wǎng)絡(luò )空間了。

這樣若是您哪天心情好,對外宣傳說(shuō):我要將每個(gè)用戶(hù)的存儲空間上限提升到 1TB。那么每個(gè)用戶(hù)平均還是只上傳 50M 數據,只有極個(gè)別的用戶(hù)上傳了突破 1G 原始空間的數據,你會(huì )發(fā)現所付出的成本近乎是微乎其微的。

辛勤的攻城獅還在為如何更有效率的利用服務(wù)器提供的磁盤(pán)空間在不屑努力和挖掘著(zhù)……

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

快速回復 返回頂部 返回列表
通江县| 黔西县| 淮南市| 通城县| 雷波县| 剑河县| 衡东县| 平江县| 湘潭市| 盖州市| 大荔县| 平和县| 巴里| 东城区| 沁阳市| 宜章县| 易门县| 拉孜县| 红河县| 深圳市| 长泰县| 宁城县| 木里| 罗田县| 永和县| 象州县| 介休市| 林州市| 文昌市| 安岳县| 双流县| 连平县| 枞阳县| 岢岚县| 旺苍县| 闸北区| 昭觉县| 友谊县| 垦利县| 金阳县| 双峰县|