卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

分布式文件系統(tǒng)設(shè)計步驟 hadoop設(shè)計理念和核心技術(shù)?

hadoop設(shè)計理念和核心技術(shù)?狹義的hadoop指的是HDFS和MapReduce。HDFS是hadoop分布式文件系統(tǒng),是由多臺計算機組成的集群上的組件文件系統(tǒng)。MapReduc如何使用Mongo

hadoop設(shè)計理念和核心技術(shù)?

狹義的hadoop指的是HDFS和MapReduce。HDFS是hadoop分布式文件系統(tǒng),是由多臺計算機組成的集群上的組件文件系統(tǒng)。MapReduc

如何使用MongoDb實現(xiàn)分布式Id?

在傳統(tǒng)數(shù)據(jù)庫軟件的開發(fā)中,各大數(shù)據(jù)庫也對這一需求提供了相應(yīng)的支持,比如MySQL的自增。

分布式ID的特點包括:唯一性:保證生成的ID在全網(wǎng)唯一;高可用性:確保ID在任何時候都能正確生成。

github上對分布式ID的描述是:分布式唯一性和時間序列。

主要方案包括

使用reids的incr命令,使用UUIDTwitter的雪花算法,使用zookeeper生成MongoDB的唯一ID。ObjectIdMongoDB被設(shè)計成輕量級的,不同的機器可以是全局唯一的。

其格式:

前4個字節(jié)是標(biāo)準(zhǔn)時代的時間戳,以秒為單位。時間戳與接下來的5個字節(jié)一起提供了第二級的唯一性。因為時間戳排在最前面,這意味著ObjectId將大致按照插入順序排列。這在某些方面是有用的,比如用它作為索引來提高效率。這四個字節(jié)也暗示了文檔創(chuàng)建的時間。大多數(shù)客戶端類庫都會公開一個方法來從ObjectId獲取這些信息。

接下來的3個字節(jié)是主機的唯一標(biāo)識符。通常是機器主機名的哈希值。這可以確保不同的主機生成不同的ObjectId而不會發(fā)生。為了確保同一臺機器上多個并發(fā)進程生成的ObjectId是唯一的,接下來的兩個字節(jié)來自生成ObjectId的進程標(biāo)識符(PID)。

前9個字節(jié)確保不同機器和進程在同一秒內(nèi)生成的ObjectId是唯一的。最后3個字節(jié)是自動遞增的計數(shù)器,保證同一進程在同一秒生成的ObjectId也是不同的。每個進程允許同時擁有2563(16 777 216)個不同的ObjectId。

機器ID是服務(wù)器主機的標(biāo)識,通常是機器主機名的哈希值。

您可以在同一臺機器上運行mongod的多個實例,因此您還需要添加進程標(biāo)識符PID。

前9個字節(jié)保證了同一秒內(nèi)不同機器和進程生成的ObjectId的唯一性。最后三個字節(jié)是一個自動遞增的計數(shù)器(一個mongod進程需要一個全局計數(shù)器),保證了同一秒的ObjectId是唯一的。每個進程最多允許有(256 ^ 3 ^ 167。77216)不同的ObjectId。

綜上所述,時間戳保證以秒為單位的唯一性,機器ID保證設(shè)計分布式避免時鐘同步,PID保證同一個服務(wù)器運行多個mongod實例時的唯一性,最后一個計數(shù)器保證同一秒內(nèi)的唯一性(幾個字節(jié)的選擇既要考慮存儲的經(jīng)濟性,又要考慮并發(fā)性能的上限)。

_id既可以在服務(wù)器端生成,也可以在客戶端生成,可以減輕服務(wù)器端的壓力。

主要參考: