您好,登錄后才能下訂單哦!
摘要: Mesos為很多不同的用戶場(chǎng)景都提供了精妙的,考慮周全的API。持久化卷是由新的acceptOffers API引入的特性。持久化卷讓用戶可以為Mesos構(gòu)建數(shù)據(jù)庫(kù)框架,Mesos可以在任何不可預(yù)見的故障和錯(cuò)誤發(fā)生并且影響整個(gè)系統(tǒng)時(shí),使數(shù)據(jù)持久化。本文選自《用Mesos框架構(gòu)建分布式應(yīng)用》。
直到最近,Mesos都僅僅能夠運(yùn)行無須向磁盤存儲(chǔ)數(shù)據(jù)的服務(wù)。這是因?yàn)闆]有方法預(yù)留所需的磁盤塊。從Mesos 0.23版本開始,可以預(yù)留磁盤了。
我們可以將Mesos當(dāng)作一個(gè)部署系統(tǒng)。如果MySQL數(shù)據(jù)庫(kù)能夠自動(dòng)將自身備份,并且按需創(chuàng)建新的副本,是不是很好呢?或者如果擁有一個(gè)簡(jiǎn)單的,自服務(wù)的REST API,能夠創(chuàng)建新的Riak和Cassandra集群,又會(huì)怎么樣呢?為Mesos構(gòu)建數(shù)據(jù)庫(kù)框架的工作從2014年就開始了。這些框架的問題是每個(gè)主機(jī)都必須創(chuàng)建特別的數(shù)據(jù)分區(qū),并且在Mesos之外加以管理。使用持久化卷,類似Apache Cotton(MySQL所用)以及Cassandra和Riak Mesos框架的項(xiàng)目就都能夠獨(dú)立啟動(dòng)和維護(hù)了。
在Mesos的設(shè)計(jì)里,磁盤空間是短暫的,并且是按任務(wù)隔離的。這通常是一件好事,除非用戶想要持久地保存數(shù)據(jù)。要解決這個(gè)問題,Mesos引入了一個(gè)新的磁盤資源的子類型,稱為volume。volume是分配給一個(gè)任務(wù)的磁盤塊,并且掛載在特定位置。完成這一功能的API和掛載主機(jī)卷的Marathon API(詳見“掛載主機(jī)卷”部分),幾乎完全一致。用戶甚至可以創(chuàng)建不持久的卷,這在想將多個(gè)獨(dú)立磁盤暴露給Mesos時(shí)會(huì)很有用。
下面研究一下如何創(chuàng)建并且使用持久化卷。
有兩個(gè)acceptOffers Operation用來創(chuàng)建以及銷毀持久化卷。不出意外地,它們稱為Create和Destroy。僅僅能夠在已經(jīng)被預(yù)留的磁盤資源上創(chuàng)建持久化卷。通常,用戶會(huì)預(yù)留資源,創(chuàng)建卷,并且在單個(gè)acceptOffers里啟動(dòng)任務(wù),如下面示例所示。
持久化卷資源和常規(guī)磁盤資源一樣,但是它帶有字段disk,設(shè)置為合適的DiskInfo。DiskInfo給該持久化卷命名,這樣它能夠掛載上,名字為嵌套的字符串子字段persistence.id的名稱。DiskInfo的Volume必須使用RW模式(因?yàn)镸esos 0.24只支持RW)。Volume的container_path字段會(huì)指定容器在任務(wù)沙箱里的掛載位置。
持久化卷API是很新的功能,因此還沒有任何生產(chǎn)環(huán)境框架用到它。它也有一些限制,比如卷必須一直掛載為RW,并且沒有辦法暴露多個(gè)磁盤,也沒有任何磁盤或I/O隔離。即使添加了新特性和功能之后,也會(huì)保證該API的后向兼容性。因此,類似Apache Cotton的項(xiàng)目已經(jīng)在其代碼基里集成了持久化卷。
本文選自《用Mesos框架構(gòu)建分布式應(yīng)用》,點(diǎn)此鏈接可在博文視點(diǎn)官網(wǎng)查看此書。
想及時(shí)獲得更多精彩文章,可在微信中搜索“博文視點(diǎn)”或者掃描下方二維碼并關(guān)注。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。