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

正文內(nèi)容

分布式結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)系統(tǒng)方案-閱讀頁

2025-05-13 02:02本頁面
  

【正文】 作和順序讀取操作。此外TFS不提供文件的隨機(jī)寫操作。它保證的是高的I/O吞吐率,比如針對(duì)大文件的追加和順序讀取。但是TFS并不保證每一次讀寫的低延遲(Low latency),系統(tǒng)在實(shí)現(xiàn)時(shí)需要盡量減少在TFS上的隨機(jī)讀操作操作。l 當(dāng)TSFile被分配到某臺(tái)TabletServer上時(shí),TabletServer會(huì)把整個(gè)TSFile文件讀取到本地磁盤。然而帶來的問題是如果當(dāng)前的TSFile沒有在本地緩存,那么這次讀操作的延遲將較大。針對(duì)這種情況,一種解決辦法是讓系統(tǒng)支持少量的隨機(jī)讀操作,比如上面所述的情況,TabletServer一邊直接去TFS上讀取想要的數(shù)據(jù),一邊把整個(gè)TSFile下載到本地。l 每個(gè)TabletServer會(huì)以追加的方式寫一個(gè)WriteLog文件,文件中包含了當(dāng)前操作的數(shù)據(jù),本文后面章節(jié)會(huì)有針對(duì)WriteLog的詳細(xì)介紹。 Master主控節(jié)點(diǎn)Master在系統(tǒng)集群中負(fù)責(zé)全局的負(fù)載平衡和Client端的請(qǐng)求分發(fā)。在系統(tǒng)中,Master是一個(gè)無狀態(tài)的服務(wù)器,本身不存儲(chǔ)任何元數(shù)據(jù),所有的信息都是從別處獲得并存放在自己的內(nèi)存中。 啟動(dòng)流程當(dāng)Master實(shí)例成功當(dāng)選為Master后,就正式進(jìn)入啟動(dòng)流程。這個(gè)表的結(jié)構(gòu)是一個(gè)按照Range排好序的Tablet的集合。通過這個(gè)信息,Master會(huì)依次訪問各個(gè)TabletServer得到它們的已被分配的Tablet信息,從而建立一張Tablet ID到TabletServer的映射表。3. 最后,Master注冊(cè)Debby上關(guān)于路徑/prefix/servers/的消息,并將自己的IP地址和服務(wù)端口信息寫入/prefix/master文件中,一邊Client端可以通過這個(gè)文件定位到當(dāng)前服務(wù)的Master。在這里,我們從理論上可以估算一下一個(gè)集群的規(guī)模。Tablet ID(int64)Int64(8Byte)KeyRange(URL)52Byte * 2(此處為InfoMall中URL平均長度)TabletServer No.(所在的機(jī)器編號(hào))Int32(4Byte)TSFile信息Int64(8Byte) * 3 (一般每個(gè)Tablet對(duì)應(yīng)的TSFile不超過3個(gè))其他標(biāo)識(shí)32Byte總計(jì)172Byte圖表 42 Master中的元數(shù)據(jù)對(duì)于目前主流2G內(nèi)存的服務(wù)器來說,假設(shè)每個(gè)Tablet的大小約為100M,則理論上可以存儲(chǔ)的數(shù)據(jù)規(guī)模約為1190P。 主要功能總結(jié)起來,Master的主要功能包括以下幾個(gè)方面:1. 管理全局的Tablet。2. 管理所有的TabletServer,調(diào)度集群負(fù)載的均衡。當(dāng)一個(gè)TabletServer節(jié)點(diǎn)失效時(shí),Master需要確定失效的Tablet,并向其他節(jié)點(diǎn)分發(fā)這些Tablet。Client端通過Debby上的/prefix/master的文件來定位Master位置,通過Master得到需要操作的表中所有Tablet的元信息(后稱為表信息),其中包括Tablet被分配到的服務(wù)節(jié)點(diǎn)的位置信息。在此處,由于Client對(duì)表的操作非常地頻繁,為了減輕Master的負(fù)載,表信息被緩存在Client端。表信息改動(dòng)的原因來自兩個(gè)方面,一種是Tablet過大而分裂;另一種是TabletServer節(jié)點(diǎn)失效或者負(fù)載過大導(dǎo)致Tablet的遷移。4. 控制Tablet的分裂。如果某個(gè)時(shí)刻系統(tǒng)中沒有Master,TabletServer則不能進(jìn)行分裂。5. 負(fù)載均衡,見下文所述。要想進(jìn)行負(fù)載平衡,Master首先需要收集各臺(tái)TabletServer上的負(fù)載信息。這些信息是Master做負(fù)載調(diào)度時(shí)的依據(jù)。Tablet的遷移即把負(fù)載較重的節(jié)點(diǎn)上的Tablet遷移到負(fù)載較輕的機(jī)器上去。2. 熱點(diǎn)Tablet分裂。這個(gè)時(shí)候需要把此Tablet分裂并遷移到其他節(jié)點(diǎn)上以降低負(fù)載,通常情況下Request也會(huì)隨之分散到其它節(jié)點(diǎn)上。3. 延遲分配Tablet(Lazy模式)。由于磁盤的大小也是有限的,對(duì)于本系統(tǒng)來說,很多表格的數(shù)據(jù)只是為了存儲(chǔ),使用的頻率很少,這些不被使用的表格完全沒必要加載到各臺(tái)服務(wù)的服務(wù)器上。所謂Lazy模式,簡而言之,就是一個(gè)表的Tablet直到用時(shí)才會(huì)被加載到TabletServer上。在實(shí)際算法中,Master通過檢測TabletServer的硬盤使用情況來確定是否卸載那些很長時(shí)間不被使用的Tablet。Client端通過Master定位到所在TabletServer后,所有的數(shù)據(jù)操作都是Client端與TabletServer端直接通信進(jìn)行。在TabletServer中,維護(hù)著下列一些數(shù)據(jù)結(jié)構(gòu):l 正在服務(wù)的Tablet元數(shù)據(jù)信息。l 已打開的TSFile信息。另一種是已經(jīng)在集群中服務(wù)過的節(jié)點(diǎn)重啟,這類TabletServer本地磁盤維護(hù)著上一次服務(wù)的Tablet元數(shù)據(jù)和TSFile文件,為了減少數(shù)據(jù)不必要的傳輸,需要盡量利用好這些數(shù)據(jù)。如果版本號(hào)小于Debby上的版本號(hào),則丟棄,否則留下該Tablet對(duì)應(yīng)的數(shù)據(jù)。不管是哪一類節(jié)點(diǎn)的初始化,在開始服務(wù)之前需要在/prefix/servers/也建立一個(gè)名為“IP地址:服務(wù)端口號(hào)”的文件(:5678),以便讓Master及時(shí)發(fā)現(xiàn)它;在/prefix/logs/下建立一個(gè)log文件,用于寫WriteLog(見下節(jié)所述)。等待Master分配Tablet并開始服務(wù)。但是,節(jié)點(diǎn)存在Tablet的有效本地緩存并不能保證該Tablet會(huì)被分配到本機(jī)。在整個(gè)分配Tablet的過程中,不管TabletServer是接受還是刪除,都由Master節(jié)點(diǎn)主動(dòng)控制,否則TabletServer不會(huì)做任何動(dòng)作。第一種是全新的Tablet,這種主要發(fā)生在創(chuàng)建表格時(shí)。第二種是遷移過來的Tablet,即這個(gè)Tablet在其他TabletServer上存在過并遷移到節(jié)點(diǎn)。最后讀取Log文件恢復(fù)數(shù)據(jù)的內(nèi)存映像。第三種Tablet是本地已有TSFile的Tablet,這種情況是由于TabletServer正?;蛘叻钦5闹貑⒑笏鶎?dǎo)致。同樣,完成后需要把內(nèi)存映像寫成TSFile上傳到TFS上并修改元數(shù)據(jù)。因此需要一種方法來保證在TabletServer崩潰后,能恢復(fù)這些存放在內(nèi)存中的映像數(shù)據(jù)。不同于傳統(tǒng)數(shù)據(jù)庫的是,Bighive中WriteLog位于分布式的文件系統(tǒng)TFS上,由TFS系統(tǒng)本身保證其正確性和可用性。圖表 43 TabletServer數(shù)據(jù)的寫操作流程WriteLog文件的管理在本系統(tǒng)中,每個(gè)TabletServer實(shí)例只會(huì)以追加的方式寫一個(gè)log文件。這中寫log方式的好處是管理的TFS句柄較少(只有一個(gè)),并且這種append的方式寫數(shù)據(jù)可以高效地利用TFS。另一種可選方案是為每個(gè)Tablet建立一個(gè)log文件,好處是恢復(fù)時(shí)只需要讀tablet對(duì)應(yīng)的log即可,缺點(diǎn)是每個(gè)TabletServer需要管理很多TFS文件句柄。文獻(xiàn)[1]中對(duì)此問題也有提及。WriteLog文件的命名每個(gè)Log文件的名稱是以當(dāng)前TabletServer服務(wù)的IP地址加端口號(hào)(前綴)再加創(chuàng)建此日志文件時(shí)的時(shí)間戳(后綴)組成,形如“:”。很顯然,按照Log文件名的后綴時(shí)間戳排序就可以完整的得到Log的創(chuàng)建順序,這對(duì)于下一步通過Log文件來恢復(fù)Tablet的狀態(tài)具有重要的作用。當(dāng)一個(gè)Tablet所在的TabletServer節(jié)點(diǎn)失效后,它被重新分配后,新接收的TabletServer會(huì)從TFS上下載這個(gè)Tablet對(duì)應(yīng)的TSFile文件,并且讀取這個(gè)Tablet對(duì)應(yīng)的元數(shù)據(jù),根據(jù)元數(shù)據(jù)中記錄的Log位置,恢復(fù)該Tablet在內(nèi)存中的數(shù)據(jù)部分,這個(gè)過程之為Log Replay。Log的Replay過程具有冪等性。這是因?yàn)樵赥SFile語義中Column, Key, Timestamp三元組是不能有重復(fù)的。所謂保證至少一次的語義是指,若一個(gè)操作沒有被證明確實(shí)成功,那么就會(huì)再做一次這個(gè)操作。WriteLog的文件格式WriteLog主要面向兩種操作,寫數(shù)據(jù)和刪除數(shù)據(jù),格式如下所示。l Timestamp:寫此Log條目時(shí)的時(shí)間戳。l Operation:表示操作類型(寫/刪除)。CheckpointCheckpoint是數(shù)據(jù)庫系統(tǒng)中常用到的方法。系統(tǒng)在checkpoint點(diǎn)上的狀態(tài)和數(shù)據(jù)是一致的。正是由于系統(tǒng)在checkpoint點(diǎn)上數(shù)據(jù)和狀態(tài)是一致的,因此從最近的一個(gè)checkpoint點(diǎn)開始恢復(fù)可以大大縮短整個(gè)系統(tǒng)的恢復(fù)時(shí)間。系統(tǒng)做Checkpoint的時(shí)機(jī)主要是依據(jù)當(dāng)前內(nèi)存中(寫緩存)WriteBuffer的大小。此過程中出現(xiàn)若失敗,由于Log的路徑?jīng)]有改變,不會(huì)影響到系統(tǒng)的一致性。Checkpoint流程在Checkpoint的實(shí)現(xiàn)過程中,為了保證系統(tǒng)的正常服務(wù),checkpoint實(shí)現(xiàn)的首要目標(biāo)是不阻塞正常的讀寫操作。所謂兩個(gè)WriteBuffer的交替,是指Tablet的實(shí)現(xiàn)中,存在著兩個(gè)WriteBuffer的數(shù)據(jù)結(jié)構(gòu)。假設(shè)每個(gè)Tablet中的兩個(gè)WriteBuffer分別命名為BufferA、BufferB。在開始做checkpoint時(shí),BufferA和BufferB的角色互換,BufferA被成為備WriteBuffer,只提供數(shù)據(jù)的讀取,不在接受數(shù)據(jù)的寫入;BufferB被設(shè)置為主WriteBuffer,接受寫入的數(shù)據(jù)。Checkpoint結(jié)束時(shí),BufferA被清空,等待下一次checkpoint。2. 在開始寫數(shù)據(jù)之前,checkpoint線程抓住系統(tǒng)的全局狀態(tài)鎖,把系統(tǒng)設(shè)置成只讀狀態(tài)(ReadOnly)。4. 為系統(tǒng)生成新log的文件(詳情請(qǐng)見本節(jié)上文所述)。6. 將各個(gè)Tablet中備WriteBuffer存放的數(shù)據(jù)寫成TSFile,并上傳到TFS上。7. 更改各個(gè)Tablet元數(shù)據(jù),將log路徑域的值設(shè)置成當(dāng)前的log路徑。但有因?yàn)?~5步的操作都是內(nèi)存中的簡單操作,因此這個(gè)不可寫的時(shí)間段非常之短。在TabletServer中,存在著兩種類型的緩存。Tablet在沒有做Checkpoint之前,所有新寫入的數(shù)據(jù)都被放在Write Buffer中,而TabletServer何時(shí)做Checkpoint是由其分配給Write Buffer的內(nèi)存上限決定的。若寫緩存上限過大,雖然Checkpoint得次數(shù)大為減少,但是又會(huì)帶來另一個(gè)嚴(yán)重的問題。若寫緩存內(nèi)存過大,意味著Log文件很大,假設(shè)此時(shí)TabletServer節(jié)點(diǎn)出錯(cuò)而停止服務(wù),這些Tablet將會(huì)被分配到其他TabletServer上。由于Log文件是很多Tablet共用的,即使TabletServer只接受一個(gè)Tablet,它也需要把整個(gè)Log文件讀取一遍,已找到相應(yīng)的Tablet的Log。我們假設(shè)失效的TabletServer節(jié)點(diǎn)在失效前服務(wù)n個(gè)Tablet,Write Buffer占用的內(nèi)存大小為b,顯然Log文件的大小至少為b。內(nèi)存空間b越大,則整個(gè)恢復(fù)的流程越慢。這樣被分配到Tablet的TabletServer只需要讀取對(duì)應(yīng)的Log小文件,減少了大量的冗余I/O操作,加速整個(gè)恢復(fù)流程。讀緩存另一種類型的緩存是讀緩存。最好情況下,節(jié)點(diǎn)內(nèi)存較大并且數(shù)據(jù)量較小時(shí),這時(shí)所有的TSFile都可以被加載到內(nèi)存中,從而最大限度的保證讀數(shù)據(jù)效率。在實(shí)際使用中,不同的表格用途也不盡相同,有的表格純粹為了存儲(chǔ)數(shù)據(jù),基本不需要緩存;有的表格是為了處理數(shù)據(jù),那么只有當(dāng)這個(gè)表格在使用時(shí)才會(huì)用到緩存;還有些表格甚至是為了作為超級(jí)大的內(nèi)存Map內(nèi)使用,這種情況下要求使用的內(nèi)存最多。具體來講是Client向Master設(shè)置表的優(yōu)先級(jí),Master查詢?cè)摫韺?duì)應(yīng)的所有Tablet,向管理這些Tablet的TabletServer設(shè)置優(yōu)先級(jí)。默認(rèn)情況下表的緩存級(jí)別是Medium。表的優(yōu)先級(jí)的設(shè)置是不會(huì)被作為元數(shù)據(jù)保存的,并且這個(gè)設(shè)置只作為參考,設(shè)置優(yōu)先級(jí)后的性能跟TabletServer當(dāng)時(shí)的負(fù)載狀態(tài)相關(guān),對(duì)于緩存級(jí)別為High的表,系統(tǒng)并不保證讀操作的一個(gè)絕對(duì)性能提升。 Tablet分裂當(dāng)一個(gè)Tablet的數(shù)據(jù)過多或者成為了熱點(diǎn)Tablet后,需要把這個(gè)Tablet分裂成兩個(gè)較小的Tablet以便加以調(diào)度。整個(gè)分裂的流程如下:1. TabletServer通過后臺(tái)進(jìn)程監(jiān)控所有Tablet的大小,當(dāng)其發(fā)現(xiàn)某個(gè)Tablet過大時(shí)(超過一定的閾值),進(jìn)入準(zhǔn)備分裂狀態(tài)。3. 拿到兩個(gè)新的Tablet ID后,掃描原Tablet確定從某個(gè)midkey分裂,從而確定這兩個(gè)Tablet的Range。從此時(shí)開始,所有向待分裂Tablet的寫請(qǐng)求都會(huì)寫兩份日志,一份是原TabletServer的日志,另一份寫入相應(yīng)新生成的Tablet的日志,即 /prefix/splitlog/id(id為分裂后的Tablet的ID)。5. TabletServer將待分裂的Tablet劃分成兩個(gè)TSFile,并上傳到后臺(tái)TFS上。6. 上傳完TSFile結(jié)束后,TabletServer向Master報(bào)告分裂完成,Master在Debby中增加這兩個(gè)新的Tablet的元信息,并刪除舊的Tablet信息。隨后,Master根據(jù)分配算法分配這兩個(gè)Tablet。在整個(gè)分裂的過程中,元數(shù)據(jù)和系統(tǒng)狀態(tài)的修改留到最后才進(jìn)行,并且由數(shù)據(jù)庫(Debby使用Berkeley DB)的事務(wù)性來保證這個(gè)修改的原子性和完整性,不會(huì)在Debby上出現(xiàn)元信息不一致的情況,比如新舊Tablet同時(shí)存在,或者新舊Tablet同時(shí)不存在。若最后修改元數(shù)據(jù)出錯(cuò),若Tablet的信息沒有被寫上,則和上述情況一樣;若Tablet信息已被寫上,則分裂已成功,Master恢復(fù)時(shí)只需分配這兩個(gè)Tablet??蛻舳瞬粌H為用戶提供整齊統(tǒng)一的接口,在內(nèi)部處理與Master,TabletServer以及Debby的交互,并進(jìn)行必要的錯(cuò)誤處理和重試工作。當(dāng)需要操作數(shù)據(jù)時(shí),Client直接與相應(yīng)的TabletServer通信操作數(shù)據(jù)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1