自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

云計(jì)算背后的秘密(7)-YunTable的故事

云計(jì)算
在本系列之前的一篇文章,和大家提到過(guò),其實(shí)業(yè)界已經(jīng)出現(xiàn)很多NoSQL產(chǎn)品,那么筆者為什么在這些產(chǎn)品的基礎(chǔ)上,研發(fā)新的NoSQL數(shù)據(jù)庫(kù)呢? 因?yàn)樵谘邪l(fā)YunEngine的時(shí)候,筆者發(fā)現(xiàn)在業(yè)界還缺乏一款在架構(gòu)上非常簡(jiǎn)潔,并同時(shí)可以適應(yīng)各種云計(jì)算場(chǎng)景的NoSQL數(shù)據(jù)庫(kù),所以在那時(shí)本人就開(kāi)始進(jìn)行YunTable的開(kāi)發(fā)工作。

在本系列之前的一篇文章,和大家提到過(guò),其實(shí)業(yè)界已經(jīng)出現(xiàn)很多NoSQL產(chǎn)品,那么筆者為什么在這些產(chǎn)品的基礎(chǔ)上,研發(fā)新的NoSQL數(shù)據(jù)庫(kù)呢? 因?yàn)樵谘邪l(fā)YunEngine的時(shí)候,筆者發(fā)現(xiàn)在業(yè)界還缺乏一款在架構(gòu)上非常簡(jiǎn)潔,并同時(shí)可以適應(yīng)各種云計(jì)算場(chǎng)景的NoSQL數(shù)據(jù)庫(kù),所以在那時(shí)本人就開(kāi)始進(jìn)行YunTable的開(kāi)發(fā)工作。

YunTable的目標(biāo)并不是做一個(gè)像BigTable那樣大而全的數(shù)據(jù)庫(kù),而是主要做一個(gè)精簡(jiǎn)版的分布式Key-Value數(shù)據(jù)庫(kù),上層的云計(jì)算應(yīng)用將會(huì)根據(jù)其自身的需求去利用YunTable或者做修改,從而使YunTable能適應(yīng)云計(jì)算各種場(chǎng)景,并且非常易用。YunTable已經(jīng)在10月初正式開(kāi)源,并發(fā)布其0.8版,官方地址是http://code.google.com/p/yuntable/。下面將對(duì)YunTable進(jìn)行分析和介紹,包括它的設(shè)計(jì)、架構(gòu)和如何適應(yīng)不同的云計(jì)算環(huán)境。

YunTable的設(shè)計(jì)

談到一個(gè)NoSQL數(shù)據(jù)庫(kù)的設(shè)計(jì)時(shí),肯定離不開(kāi)數(shù)據(jù)模型、分布式架構(gòu)和數(shù)據(jù)存儲(chǔ)這三方面。

在數(shù)據(jù)模型上,YunTable是Key-Value的,雖然Key-value這種數(shù)據(jù)模型在結(jié)構(gòu)方面和傳統(tǒng)的關(guān)系型相比較簡(jiǎn)單,有點(diǎn)類似常見(jiàn)的HashTable,一個(gè)Key對(duì)應(yīng)一個(gè)Value,但是其能提供非??斓牟樵兯俣?、大的數(shù)據(jù)存放量和高并發(fā)地操作,并非常適合通過(guò)主鍵(Key)來(lái)對(duì)數(shù)據(jù)進(jìn)行查詢和修改等操作,雖然不支持復(fù)雜的操作,但是可以通過(guò)上層的開(kāi)發(fā)來(lái)彌補(bǔ)這個(gè)缺陷。

在分布式架構(gòu)方面,YunTable選擇了Single Master模式來(lái)管理整個(gè)集群,雖然這個(gè)模式存在單點(diǎn)失敗的隱患,但是不論是在實(shí)現(xiàn),還是在語(yǔ)義方面都非常簡(jiǎn)單,而且為了避免Master出現(xiàn)單點(diǎn)失敗的情況,YunTable將會(huì)在今后版本中引入Shadow-Master這種機(jī)制。

在數(shù)據(jù)存儲(chǔ)方面,YunTable選擇了SSTable這種文件格式。簡(jiǎn)單而言,SSTable是一個(gè)用于存儲(chǔ)已排序Key-Value對(duì)的文件格式,并且是不可變動(dòng)的(Immutable),也就是寫了之后,只能將其更新附加在其之后,而不能直接進(jìn)行修改,這樣是為了讓系統(tǒng)能執(zhí)行Disk所擅長(zhǎng)的順序訪問(wèn),而不是隨機(jī)訪問(wèn)。在內(nèi)部格式方面,SSTable文件主要有Index和Data Block這兩部分組成。在實(shí)際運(yùn)行時(shí),系統(tǒng)常會(huì)把Index載入內(nèi)存,以確保查詢的效率。

YunTable的架構(gòu)

在架構(gòu)方面,主要可分為Region、Master和Client這三個(gè)模塊,而且這三個(gè)模塊都是獨(dú)立的,并負(fù)責(zé)各自的業(yè)務(wù)邏輯。
 

 

▲圖1. YunTable的架構(gòu)

首先,介紹一下Master節(jié)點(diǎn),Master節(jié)點(diǎn)在功能上面屬于比較“輕”調(diào),主要負(fù)責(zé)維護(hù)Table和Region節(jié)點(diǎn)之間的對(duì)應(yīng)關(guān)系,實(shí)際數(shù)據(jù)的查詢和輸入則都通過(guò)Region節(jié)點(diǎn)和Client端之間的交互完成,和Master節(jié)點(diǎn)無(wú)關(guān),這樣能有效地減輕Master節(jié)點(diǎn)的負(fù)擔(dān),使得其能支撐百臺(tái)服務(wù)器以上的集群。舉個(gè)例子,比如,當(dāng)一個(gè)Client端需要處理某個(gè)Table的時(shí)候,它只需在***次處理時(shí)候,向Master請(qǐng)求和這個(gè)Table相關(guān)的Region節(jié)點(diǎn)的地址,當(dāng)之后再次處理到這個(gè)Table的時(shí)候,Client端無(wú)需再和Master節(jié)點(diǎn)進(jìn)行溝通,而是直接和相關(guān)的Region節(jié)點(diǎn)進(jìn)行交互即可。

其次,談?wù)凴egion節(jié)點(diǎn),其作用是負(fù)責(zé)處理來(lái)自Client端的請(qǐng)求,并存儲(chǔ)和管理大量的數(shù)據(jù),Region節(jié)點(diǎn)非常類似BigTable論文中所提到的Tablet服務(wù)器。每個(gè)Region服務(wù)器管理多個(gè)Tablet,每個(gè)Tablet對(duì)應(yīng)一個(gè)Table,并負(fù)責(zé)存儲(chǔ)屬于這個(gè)Table的數(shù)據(jù)。除了管理多個(gè)Tablet之外,Region服務(wù)器還自帶WAL日志,全稱為“Write-Ahead Log”,主要用于暫存那些***的數(shù)據(jù)更新請(qǐng)求,以避免當(dāng)Tablet中的Memstore被意外關(guān)閉時(shí)所造成的數(shù)據(jù)丟失,而當(dāng)Memstore完成對(duì)數(shù)據(jù)的寫入之后,WAL也會(huì)清空那些對(duì)應(yīng)的數(shù)據(jù)。用于存儲(chǔ)數(shù)據(jù)的Tablet主要有兩大部分組成:其一是Memstore:其是緩存在內(nèi)存中的數(shù)據(jù)文件,主要存儲(chǔ)***添加的數(shù)據(jù),當(dāng)Memstore存儲(chǔ)的數(shù)據(jù)接近限定值時(shí),在Memstore上緩存的數(shù)據(jù)都將會(huì)被沖刷(Flush)到Y(jié)File中;其二是YFile,它是主要用于存儲(chǔ)數(shù)據(jù)的持久化文件,它是基于上面提到的SSTable格式,YFile只會(huì)在當(dāng)Memstore被觸發(fā)沖刷時(shí)創(chuàng)建,平時(shí)常被順序讀,這樣能有效地利用硬盤順序讀性能好的特性,文件的位置在其所屬Tablet的目錄中。

現(xiàn)在Client端主要以名為“YunCli”的命令行為主,主要用于讓用戶輸入與數(shù)據(jù)處理相關(guān)的命令,并與后端的Master節(jié)點(diǎn)和Region節(jié)點(diǎn)進(jìn)行交互,但隨著時(shí)間的發(fā)展,在形式上,Client端有可能是類似JDBC的驅(qū)動(dòng)等。

如何適應(yīng)不同的云計(jì)算環(huán)境

云計(jì)算主要常見(jiàn)的有兩類場(chǎng)景:需要低延遲和高并發(fā)的讀寫能力,數(shù)據(jù)量雖大,但稱不上海量,估計(jì)最多在TB級(jí)別,大部分現(xiàn)在使用RDBMS的Web應(yīng)用基本上都屬于這一類,有點(diǎn)類似傳統(tǒng)的OLTP(聯(lián)機(jī)事務(wù)處理);海量數(shù)據(jù)的存儲(chǔ)和操作,比如PB級(jí)別的,這方面的例子有傳統(tǒng)的數(shù)據(jù)倉(cāng)庫(kù)、Google海量的Web頁(yè)面和圖片存儲(chǔ)等,有點(diǎn)類似傳統(tǒng)的OLAP(聯(lián)機(jī)分析處理)。

那么YunTable是如何適應(yīng)這兩種環(huán)境?首先,堅(jiān)持Key-Value、Single-Master和SSTable這樣經(jīng)典和通用的設(shè)計(jì)。其次,在數(shù)據(jù)存儲(chǔ)方面,加入Hotness這個(gè)機(jī)制,主要是通過(guò)設(shè)置Hotness值來(lái)決定之前為了完成查詢而讀取到內(nèi)存中的Data Block的生存時(shí)間,假設(shè)如果是低延遲的情況,那么將Hotness值設(shè)置長(zhǎng)一點(diǎn),如果是海量數(shù)據(jù),則相反。

***,YunTable作為新一代的PaaS平臺(tái)YunEngine的后端數(shù)據(jù)庫(kù)已經(jīng)投入實(shí)際運(yùn)行中,而且即將發(fā)布其0.9版,在這個(gè)版本中,YunTable的單點(diǎn)性能和穩(wěn)定性將會(huì)走上一個(gè)新的臺(tái)階。還有,下一篇將繼續(xù)給大家關(guān)注NoSQL。

作者簡(jiǎn)介

吳朱華,之前在IBM中國(guó)研究院參與過(guò)多個(gè)云計(jì)算產(chǎn)品的開(kāi)發(fā)工作,現(xiàn)在專注于YunTable(http://code.google.com/p/yuntable/)和YunEngine(http://yunengine.com/)的研發(fā),并即將發(fā)表《剖析云計(jì)算》一書(shū),敬請(qǐng)期待。
 

【編輯推薦】

  1. 云計(jì)算背后的秘密(3)-BigTable
  2. 云計(jì)算背后的秘密(2)-GFS
  3. 云計(jì)算背后的秘密(1)-MapReduce
  4. 云計(jì)算背后的秘密(4)-Chubby
  5. 云計(jì)算背后的秘密(6)-NoSQL數(shù)據(jù)庫(kù)綜述

 

責(zé)任編輯:王勇 來(lái)源: it168
相關(guān)推薦

2010-11-29 10:28:32

云計(jì)算BigTable

2010-11-25 09:54:14

云計(jì)算MapReduce

2010-12-06 14:28:56

云計(jì)算Chubby

2010-11-25 10:05:51

云計(jì)算GFS

2011-02-17 09:45:40

云計(jì)算RPC框架

2012-08-27 10:56:41

2020-06-19 12:06:12

云計(jì)算云平臺(tái)IT

2010-12-23 10:19:14

云計(jì)算NoSQL數(shù)據(jù)庫(kù)

2009-05-05 08:51:33

微軟Windows 7操作系統(tǒng)

2011-01-06 16:36:05

云計(jì)算Google

2012-10-17 13:50:25

2010-07-29 10:20:35

JDK 7Java 7Java政治

2020-04-15 13:55:28

Kubernetes容器

2018-11-06 15:56:25

西門子工業(yè)網(wǎng)絡(luò)智能制造

2018-12-19 16:37:09

華為

2018-12-21 10:46:43

華為《營(yíng)贏》雜志

2011-09-26 14:28:28

水果忍者

2020-02-17 21:04:47

在線辦公教育

2022-12-29 08:00:00

Transforme架構(gòu)深度學(xué)習(xí)

2014-04-14 10:06:22

.Net 開(kāi)源
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)