freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

google云計(jì)算原理-資料下載頁(yè)

2025-06-29 07:55本頁(yè)面
  

【正文】 服務(wù)器對(duì)子表服務(wù)器的監(jiān)控是通過(guò)Chubby來(lái)完成的,子表服務(wù)器在初始化時(shí)都會(huì)從Chubby中得到一個(gè)獨(dú)占鎖。通過(guò)這種方式所有的子表服務(wù)器基本信息被保存在Chubby中一個(gè)稱為服務(wù)器目錄(Server Directory)的特殊目錄之中。主服務(wù)器通過(guò)檢測(cè)這個(gè)目錄就可以隨時(shí)獲取最新的子表服務(wù)器信息,包括目前活躍的子表服務(wù)器,以及每個(gè)子表服務(wù)器上現(xiàn)已分配的子表。對(duì)于每個(gè)具體的子表服務(wù)器,主服務(wù)器會(huì)定期向其詢問(wèn)獨(dú)占鎖的狀態(tài)。如果子表服務(wù)器的鎖丟失或沒(méi)有回應(yīng),則此時(shí)可能有兩種情況,要么是Chubby出現(xiàn)了問(wèn)題(雖然這種概率很小,但的確存在,Google自己也做過(guò)相關(guān)測(cè)試),要么是子表服務(wù)器自身出現(xiàn)了問(wèn)題。對(duì)此主服務(wù)器首先自己嘗試獲取這個(gè)獨(dú)占鎖,如果失敗說(shuō)明Chubby服務(wù)出現(xiàn)問(wèn)題,需等待Chubby服務(wù)的恢復(fù)。如果成功則說(shuō)明Chubby服務(wù)良好而子表服務(wù)器本身出現(xiàn)了問(wèn)題。這種情況下主服務(wù)器會(huì)中止這個(gè)子表服務(wù)器并將其上的子表全部移至其他子表服務(wù)器。當(dāng)在狀態(tài)監(jiān)測(cè)時(shí)發(fā)現(xiàn)某個(gè)子表服務(wù)器上負(fù)載過(guò)重時(shí),主服務(wù)器會(huì)自動(dòng)對(duì)其進(jìn)行負(fù)載均衡操作。基于系統(tǒng)出現(xiàn)故障是一種常態(tài)的設(shè)計(jì)理念(Google幾乎所有的產(chǎn)品都是基于這個(gè)設(shè)計(jì)理念),每個(gè)主服務(wù)器被設(shè)定了一個(gè)會(huì)話時(shí)間的限制。當(dāng)某個(gè)主服務(wù)器到時(shí)退出后,管理系統(tǒng)就會(huì)指定一個(gè)新的主服務(wù)器,這個(gè)主服務(wù)器的啟動(dòng)需要經(jīng)歷以下四個(gè)步驟[8]。1)從Chubby中獲取一個(gè)獨(dú)占鎖,確保同一時(shí)間只有一個(gè)主服務(wù)器。2)掃描服務(wù)器目錄,發(fā)現(xiàn)目前活躍的子表服務(wù)器。3)與所有的活躍子表服務(wù)器取得聯(lián)系以便了解所有子表的分配情況。4)通過(guò)掃描元數(shù)據(jù)表(Metadata Table),發(fā)現(xiàn)未分配的子表并將其分配到合適的子表服務(wù)器。如果元數(shù)據(jù)表未分配,則首先需要將根子表(Root Tablet)加入未分配的子表中。由于根子表保存了其他所有元數(shù)據(jù)子表的信息,確保了掃描能夠發(fā)現(xiàn)所有未分配的 子表。在成功完成以上四個(gè)步驟后主服務(wù)器就可以正常運(yùn)行了。 子表服務(wù)器Bigtable中實(shí)際的數(shù)據(jù)都是以子表的形式保存在子表服務(wù)器上的,客戶一般也只和子表服務(wù)器進(jìn)行通信,所以子表以及子表服務(wù)器是我們重點(diǎn)講解的概念。子表服務(wù)器上的操作主要涉及子表的定位、分配以及子表數(shù)據(jù)的最終存儲(chǔ)問(wèn)題。其中子表分配在前面已經(jīng)有了詳細(xì)介紹,這里略過(guò)不講。在講解其他問(wèn)題之前我們首先介紹一下SSTable的概念以及子表的基本結(jié)構(gòu)。1.SSTable及子表基本結(jié)構(gòu)SSTable是Google為Bigtable設(shè)計(jì)的內(nèi)部數(shù)據(jù)存儲(chǔ)格式。所有的SSTable文件都是存儲(chǔ)在GFS上的,用戶可以通過(guò)鍵來(lái)查詢相應(yīng)的值,圖215是SSTable格式的基本示意圖。圖215 SSTable結(jié)構(gòu)SSTable中的數(shù)據(jù)被劃分成一個(gè)個(gè)的塊(Block),每個(gè)塊的大小是可以設(shè)置的,一般來(lái)說(shuō)設(shè)置為64KB。在SSTable的結(jié)尾有一個(gè)索引(Index),這個(gè)索引保存了SSTable中塊的位置信息,在SSTable打開(kāi)時(shí)這個(gè)索引會(huì)被加載進(jìn)內(nèi)存,這樣用戶在查找某個(gè)塊時(shí)首先在內(nèi)存中查找塊的位置信息,然后在硬盤(pán)上直接找到這個(gè)塊,這種查找方法速度非常快。由于每個(gè)SSTable一般都不是很大,用戶還可以選擇將其整體加載進(jìn)內(nèi)存,這樣查找起來(lái)會(huì)更快。從概念上來(lái)講子表是表中一系列行的集合,它在系統(tǒng)中的實(shí)際組成如圖216所示。圖216 子表實(shí)際組成每個(gè)子表都是由多個(gè)SSTable以及日志(Log)文件構(gòu)成的。有一點(diǎn)需要注意,那就是不同子表的SSTable可以共享,也就是說(shuō)某些SSTable會(huì)參與多個(gè)子表的構(gòu)成,而由子表構(gòu)成的表則不存在子表重疊的現(xiàn)象。Bigtable中的日志文件是一種共享日志,也就是說(shuō)系統(tǒng)并不是對(duì)子表服務(wù)器上每個(gè)子表都單獨(dú)地建立一個(gè)日志文件,每個(gè)子表服務(wù)器上僅保存一個(gè)日志文件,某個(gè)子表日志只是這個(gè)共享日志的一個(gè)片段。這樣會(huì)節(jié)省大量的空間,但在恢復(fù)時(shí)卻有一定的難度,因?yàn)椴煌淖颖砜赡軙?huì)被分配到不同的子表服務(wù)器上,一般情況下每個(gè)子表服務(wù)器都需要讀取整個(gè)共享日志來(lái)獲取其對(duì)應(yīng)的子表日志。Google為了避免這種情況出現(xiàn),對(duì)日志做了一些改進(jìn)。Bigtable規(guī)定將日志的內(nèi)容按照鍵值進(jìn)行排序,這樣不同的子表服務(wù)器都可以連續(xù)讀取日志文件了。一般來(lái)說(shuō)每個(gè)子表的大小在100MB到200MB之間。每個(gè)子表服務(wù)器上保存的子表數(shù)量可以從幾十到上千不等,通常情況下是100個(gè)左右。2.子表地址子表地址的查詢是經(jīng)常碰到的操作。在Bigtable系統(tǒng)的內(nèi)部采用的是一種類似B+樹(shù)的三層查詢體系。子表地址結(jié)構(gòu)如圖217所示[8]。所有的子表地址都被記錄在元數(shù)據(jù)表中,元數(shù)據(jù)表也是由一個(gè)個(gè)的元數(shù)據(jù)子表(Metadata tablet)組成的。根子表是元數(shù)據(jù)表中一個(gè)比較特殊的子表,它既是元數(shù)據(jù)表的第一條記錄,也包含了其他元數(shù)據(jù)子表的地址,同時(shí)Chubby中的一個(gè)文件也存儲(chǔ)了這個(gè)根子表的信息。這樣在查詢時(shí),首先從Chubby中提取這個(gè)根子表的地址,進(jìn)而讀取圖217 子表地址結(jié)構(gòu)所需的元數(shù)據(jù)子表的位置,最后就可以從元數(shù)據(jù)子表中找到待查詢的子表。除了這些子表的元數(shù)據(jù)之外,元數(shù)據(jù)表中還保存了其他一些有利于調(diào)試和分析的信息,比如事件日志等。為了減少訪問(wèn)開(kāi)銷,提高客戶訪問(wèn)效率,Bigtable使用了緩存(Cache)和預(yù)?。≒refetch)技術(shù),這兩種技術(shù)手段在體系結(jié)構(gòu)設(shè)計(jì)中是很常用的。子表的地址信息被緩存在客戶端,客戶在尋址時(shí)直接根據(jù)緩存信息進(jìn)行查找。一旦出現(xiàn)緩存為空或緩存信息過(guò)時(shí)的情況,客戶端就需要按照?qǐng)D217所示方式進(jìn)行網(wǎng)絡(luò)的來(lái)回通信(Network Roundtrips)進(jìn)行尋址,在緩存為空的情況下需要三個(gè)網(wǎng)絡(luò)來(lái)回通信。如果緩存的信息是過(guò)時(shí)的,則需要六個(gè)網(wǎng)絡(luò)來(lái)回通信。其中三個(gè)用來(lái)確定信息是過(guò)時(shí)的,另外三個(gè)獲取新的地址。預(yù)取則是在每次訪問(wèn)元數(shù)據(jù)表時(shí)不僅僅讀取所需的子表元數(shù)據(jù),而是讀取多個(gè)子表的元數(shù)據(jù),這樣下次需要時(shí)就不用再次訪問(wèn)元數(shù)據(jù)表。3.子表數(shù)據(jù)存儲(chǔ)及讀寫(xiě)操作在數(shù)據(jù)的存儲(chǔ)方面Bigtable做出了一個(gè)非常重要的選擇,那就是將數(shù)據(jù)存儲(chǔ)劃分成兩塊。較新的數(shù)據(jù)存儲(chǔ)在內(nèi)存中一個(gè)稱為內(nèi)存表(Memtable)的有序緩沖里,較早的數(shù)據(jù)則以SSTable格式保存在GFS中。這種技術(shù)在數(shù)據(jù)庫(kù)中不是很常用,但Google還是做出了這種選擇,實(shí)際運(yùn)行的效果也證明Google的選擇雖然大膽卻是正確的。從圖218[8]中可以看出讀和寫(xiě)操作有很大的差異性。做寫(xiě)操作(Write Op)時(shí),首先查詢Chubby中保存的訪問(wèn)控制列表確定用戶具有相應(yīng)的寫(xiě)權(quán)限,通過(guò)認(rèn)證之后寫(xiě)入的數(shù)據(jù)首先被保存在提交日志(Commit Log)中。提交日志中以重做記錄(Redo Record)的形式保存著最近的一系列數(shù)據(jù)更改,這些重做記錄在子表進(jìn)行恢復(fù)時(shí)可以向系統(tǒng)提供已完成的更改信息。數(shù)據(jù)成功提交之后就被寫(xiě)入內(nèi)存表中。在做讀操作(Read Op)時(shí),首先還是要通過(guò)認(rèn)證,之后讀操作就要結(jié)合內(nèi)存表和SSTable文件來(lái)進(jìn)行,因?yàn)閮?nèi)存表和SSTable中都保存了數(shù)據(jù)。在數(shù)據(jù)存儲(chǔ)中還有一個(gè)重要問(wèn)題,就是數(shù)據(jù)壓縮的問(wèn)題。內(nèi)存表的空間畢竟是很有限的,當(dāng)其容量達(dá)到一個(gè)閾值時(shí),舊的內(nèi)存表就會(huì)被停止使用并壓縮成SSTable格式的文件。在Bigtable中有三種形式的數(shù)據(jù)壓縮,分別是次壓縮(Minor Compaction)、合并壓縮(Merging Compaction)和主壓縮(Major Compaction)。三者之間的關(guān)系如圖219所示。圖218 Bigtable數(shù)據(jù)存儲(chǔ)及讀寫(xiě)操作圖219 三種形式壓縮之間的關(guān)系每一次舊的內(nèi)存表停止使用時(shí)都會(huì)進(jìn)行一個(gè)次壓縮操作,這會(huì)產(chǎn)生一個(gè)SSTable。但如果系統(tǒng)中只有這種壓縮的話,SSTable的數(shù)量就會(huì)無(wú)限制地增加下去。由于讀操作要使用SSTable,數(shù)量過(guò)多的SSTable顯然會(huì)影響讀的速度。而在Bigtable中,讀操作實(shí)際上比寫(xiě)操作更重要,因此Bigtable會(huì)定期地執(zhí)行一次合并壓縮的操作,將一些已有的SSTable和現(xiàn)有的內(nèi)存表一并進(jìn)行一次壓縮。主壓縮其實(shí)是合并壓縮的一種,只不過(guò)它將所有的SSTable一次性壓縮成一個(gè)大的SSTable文件。主壓縮也是定期執(zhí)行的,執(zhí)行一次主壓縮之后可以保證將所有的被壓縮數(shù)據(jù)徹底刪除,如此一來(lái),既回收了空間又能保證敏感數(shù)據(jù)的安全性(因?yàn)檫@些敏感數(shù)據(jù)被徹底刪除了)。 性能優(yōu)化上述各種操作已經(jīng)可以實(shí)現(xiàn)Bigtable的所有功能了,但是這些基本的功能很多時(shí)候并不是很符合用戶的使用習(xí)慣,或者執(zhí)行的效率較低。有些功能Bigtable自身已經(jīng)進(jìn)行了優(yōu)化,包括使用緩存、共享式的提交日志以及利用系統(tǒng)的不變性。這些手段在前面已經(jīng)有了簡(jiǎn)單的介紹,這里不再講解。除此之外,Bigtable還允許用戶個(gè)人在基本操作基礎(chǔ)上對(duì)系統(tǒng)進(jìn)行一些優(yōu)化。這一部分主要向讀者介紹用戶可以使用的幾個(gè)重要優(yōu)化措施。實(shí)際上這些技術(shù)手段都是一些已有的數(shù)據(jù)庫(kù)方法,只不過(guò)Google將它具體地應(yīng)用于Bigtable之中罷了。1.局部性群組(Locality groups)Bigtable允許用戶將原本并不存儲(chǔ)在一起的數(shù)據(jù)以列族為單位,根據(jù)需要組織在一個(gè)單獨(dú)的SSTable中,以構(gòu)成一個(gè)局部性群組。這實(shí)際上就是數(shù)據(jù)庫(kù)中垂直分區(qū)技術(shù)的一個(gè)應(yīng)用。結(jié)合圖213的實(shí)例來(lái)看,在被Bigtable保存的網(wǎng)頁(yè)列關(guān)鍵字中,有的用戶可能只對(duì)網(wǎng)頁(yè)內(nèi)容感興趣,那么它可以通過(guò)設(shè)置局部性群組只看內(nèi)容這一列。有的則會(huì)對(duì)諸如網(wǎng)頁(yè)語(yǔ)言、網(wǎng)站排名等可以用于分析的信息比較感興趣,他也可以將這些列設(shè)置到一個(gè)群組中。局部性群組如圖220所示。圖220 局部性群組通過(guò)設(shè)置局部性群組用戶可以只看自己感興趣的內(nèi)容,對(duì)某個(gè)用戶來(lái)說(shuō)的大量無(wú)用信息無(wú)需讀取。對(duì)于一些較小的且會(huì)被經(jīng)常讀取的局部性群組,用戶可以將其SSTable文件直接加載進(jìn)內(nèi)存,這可以明顯地改善讀取效率。2.壓縮壓縮可以有效地節(jié)省空間,Bigtable中的壓縮被應(yīng)用于很多場(chǎng)合。首先壓縮可以被用在構(gòu)成局部性群組的SSTable中,可以選擇是否對(duì)個(gè)人的局部性群組的SSTable進(jìn)行壓縮。Bigtable中這種壓縮是對(duì)每個(gè)局部性群組獨(dú)立進(jìn)行的,雖然這樣會(huì)浪費(fèi)一些空間,但是在需要讀時(shí)解壓速度非常快。通常情況下,用戶可以采用兩步壓縮的方式[8]:第一步利用Bentley amp。 McIlroy方式(BMDiff)在大的掃描窗口將常見(jiàn)的長(zhǎng)串進(jìn)行壓縮;第二步采取Zippy技術(shù)進(jìn)行快速壓縮,它在一個(gè)16KB大小的掃描窗口內(nèi)尋找重復(fù)數(shù)據(jù),這個(gè)過(guò)程非常快。壓縮技術(shù)還可以提高子表的恢復(fù)速度,當(dāng)某個(gè)子表服務(wù)器停止使用后,需要將上面所有的子表移至另一個(gè)子表服務(wù)器來(lái)恢復(fù)服務(wù)。在轉(zhuǎn)移之前要進(jìn)行兩次壓縮,第一次壓縮減少了提交日志中的未壓縮狀態(tài),從而減少了恢復(fù)時(shí)間。在文件正式轉(zhuǎn)移之前還要進(jìn)行一次壓縮,這次壓縮主要是將第一次壓縮后遺留的未壓縮空間進(jìn)行壓縮。完成這兩步之后壓縮的文件就會(huì)被轉(zhuǎn)移至另一個(gè)子表服務(wù)器。3.布隆過(guò)濾器(Bloom Filter)Bigtable向用戶提供了一種稱為布隆過(guò)濾器[12]的數(shù)學(xué)工具。布隆過(guò)濾器是巴頓布隆在1970年提出的,實(shí)際上它是一個(gè)很長(zhǎng)的二進(jìn)制向量和一系列隨機(jī)映射函數(shù),在讀操作中確定子表的位置時(shí)非常有用。布隆過(guò)濾器的速度快,省空間。而且它有一個(gè)最大的好處是它絕不會(huì)將一個(gè)存在的子表判定為不存在。不過(guò)布隆過(guò)濾器也有一個(gè)缺點(diǎn),那就是在某些情況下它會(huì)將不存在的子表判斷為存在。不過(guò)這種情況出現(xiàn)的概率非常小,跟它帶來(lái)的巨大好處相比這個(gè)缺點(diǎn)是可以忍受的。目前包括Google Analytics、Google Earth、個(gè)性化搜索、Orkut和RRS閱讀器在內(nèi)的幾十個(gè)項(xiàng)目都使用了Bigtable。這些應(yīng)用對(duì)Bigtable的要求以及使用的集群機(jī)器數(shù)量都是各不相同的,但是從實(shí)際運(yùn)行來(lái)看,Bigtable完全可以滿足這些不同需求的應(yīng)用,而這一切都得益于其優(yōu)良的構(gòu)架以及恰當(dāng)?shù)募夹g(shù)選擇。與此同時(shí)Google還在不斷地對(duì)Bigtable進(jìn)行一系列的改進(jìn),通過(guò)技術(shù)改良和新特性的加入提高系統(tǒng)運(yùn)行效率及穩(wěn)定性。寧可累死在路上,也不能閑死在家里!寧可去碰壁,也不能面壁。是狼就要練好牙,是羊就要練好腿。什么是奮斗?奮斗就是每天很難,可一年一年卻越來(lái)越容易。不奮斗就是每天都很容易,可一年一年越來(lái)越難。能干的人,不在情緒上計(jì)較,只在做事上認(rèn)真;無(wú)能的人!不在做事上認(rèn)真,只在情緒上計(jì)較。拼一個(gè)春夏秋冬!贏一個(gè)無(wú)悔人生!早安!—————獻(xiàn)給所有努力的人.學(xué)習(xí)參考
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1