亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 5502 | 回復(fù): 1
打印 上一主題 下一主題

auto-sharding 無用論:auto-sharding vs. manual-sharding [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-02-21 20:12 |只看該作者 |倒序?yàn)g覽
auto-sharding 無用論:auto-sharding vs. manual-sharding


auto-sharding一直是MongoDB的一項(xiàng)引以為豪的特性,而這一回它可以會像我們國內(nèi)的某些磚家叫獸一樣,成了理論的巨人,實(shí)踐的侏儒。下面一篇文章從各個方面對auto-shrading的可用性進(jìn)行了批駁。希望能引發(fā)你一些新的思考。

原文鏈接:auto-sharding 無用論:auto-sharding vs. manual-sharding

一、美好的藍(lán)圖
剛接觸MongoDB的時候,看到它的auto-sharding功能圖,配合上replica sets簡直有一種一統(tǒng)世界的感覺。既下圖:



圖中路由機(jī)mongos可以有多臺,config機(jī)器可以多臺配置成主從或者replica sets,sharding的每個結(jié)點(diǎn)是三臺mongod組成的replica sets。高可用性,無限擴(kuò)展性盡在眼前。看似宏偉壯觀。

然而當(dāng)我真的打算要用auto-sharding功能的時候,才發(fā)現(xiàn)此設(shè)計根本不適用,下面談一點(diǎn)我個人的看法。

Sharding一詞的翻譯是分片,在這里的意思是將數(shù)據(jù)進(jìn)行水平切分。最簡單的例子就是我們在數(shù)據(jù)庫設(shè)計中的分庫分表,在Memcached緩存中的多結(jié)點(diǎn)hash存儲。而MongoDB的auto-sharding功能重在一個auto(自動化分片)。官方稱,使用這一功能,你只需要指定數(shù)據(jù)分片依賴的某個字段值,既可在不關(guān)心具體結(jié)點(diǎn)數(shù)量的情況下存儲你的數(shù)據(jù),數(shù)據(jù)會自動平均分配到后端結(jié)點(diǎn),在增加結(jié)點(diǎn)時,數(shù)據(jù)又會自動的進(jìn)行遷移,對整個系統(tǒng)進(jìn)行負(fù)載平衡。相比我們傳統(tǒng)的分庫分表,它是auto(自動)的,而傳統(tǒng)方法是manual(手動)的。

二、Foursquare宕機(jī)事件
看罷上面的描述,好像沒有任何可以挑剔的理由,但事實(shí)并不如描繪的那樣美好,從Foursquare長達(dá)11小時的宕機(jī)事件分析中,我們可以看到如下一些問題:

auto-sharding算法導(dǎo)致數(shù)據(jù)分配不均:事實(shí)上數(shù)據(jù)并不會那么平均的在各個機(jī)器間平均分配,由此而造成的短板效應(yīng)是無法忍受的。
數(shù)據(jù)遷移代價過大:在增加新的sharding結(jié)點(diǎn)時,數(shù)據(jù)確實(shí)會自動的進(jìn)行遷移,而這種遷移對于原來線上服務(wù)的結(jié)點(diǎn),服務(wù)上是有影響的。所以我們最好在存儲瓶頸到來很早之前就開始做這個遷移,而這樣做,和我們手動進(jìn)行分片,預(yù)先估算好數(shù)據(jù)量相比,優(yōu)勢不再明顯。
數(shù)據(jù)遷移造成碎片:同樣是Foursquare的失敗經(jīng)驗(yàn),在數(shù)據(jù)遷移時,我們需要遷移的數(shù)據(jù)通常并不會在磁盤上進(jìn)行連續(xù)存儲(除非你的hash條件是天然的insert時間戳)。而我們又知道MongoDB采用的是磁盤空間預(yù)分配的機(jī)制,于是在數(shù)據(jù)遷移時,可能并不會減小磁盤占用空間,反而會使得磁盤碎片化。更甚的是由于MongoDB在是采用mmap提速數(shù)據(jù)訪問,磁盤空洞并不會減小mmap的大小,反而導(dǎo)致內(nèi)存也碎片化。
而以上一些問題,在我們預(yù)先規(guī)劃好存儲量的manual-sharding上,是不存在的。

三、冷數(shù)據(jù)不冷
我認(rèn)為在存儲規(guī)劃上,可以簡單的從兩方面來評估,一是磁盤占用,也就是總數(shù)據(jù)量,二是內(nèi)存占用,也就是熱數(shù)據(jù)量。熱數(shù)據(jù)在全部數(shù)據(jù)的中所占的比例,通常會越來越小。造成這一原因的是老數(shù)據(jù)的訪問量下降。我們考慮這樣一種情況,如果你的應(yīng)用用戶量和每日新增數(shù)據(jù)量已經(jīng)相當(dāng)穩(wěn)定,我們以最近三天的數(shù)據(jù)為熱數(shù)據(jù)進(jìn)行評估,那么總數(shù)據(jù)量會隨著時間的增長而增長,而熱數(shù)據(jù)量永遠(yuǎn)是三天的量。我們這里舉的是一個極端的例子,可能你的用戶量會每天增長,但是熱數(shù)據(jù)量在全部數(shù)據(jù)中占的比例,通常是越來越少的,這個事實(shí)不容反駁。

上面說了這么多,下面我們來看我們的問題。

auto-sharding數(shù)據(jù)量變化情況:和我們上面說的情況一樣,auto-sharding機(jī)群會通過增加結(jié)點(diǎn)數(shù)來擴(kuò)展集群的存儲能力。結(jié)點(diǎn)數(shù)和數(shù)據(jù)量成線性的正比關(guān)系。
auto-sharding的熱數(shù)據(jù)比例:auto-sharding一旦一個結(jié)點(diǎn)配置完成,那么這些機(jī)器的內(nèi)存與磁盤空間比就定了。于是整個集群的熱數(shù)據(jù)比例占所有數(shù)據(jù)的比例也是一定的。
而對比我們上面的說法,熱數(shù)據(jù)占比例在所有數(shù)據(jù)中是會越來越小的。于是我們可以認(rèn)為,auto-sharding中的老結(jié)點(diǎn)浪費(fèi)掉了大量的內(nèi)存和CPU資源。

而如果我們是人為手動進(jìn)行分片,我們完全可以自己控制數(shù)據(jù)的存儲,自行設(shè)定自己的LRU或者TTL機(jī)制,將老數(shù)據(jù),冷數(shù)據(jù)進(jìn)行存儲轉(zhuǎn)移,不再占用高性能機(jī)器的各項(xiàng)機(jī)能。從而讓我們公司花大錢買來的機(jī)器能夠物盡其用。

好了,就說這一些,理解不一定正確,歡迎探討,拍磚。

論壇徽章:
0
2 [報告]
發(fā)表于 2012-02-24 17:51 |只看該作者
謝謝分享
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP