Mesos:數據庫使用的持久化卷

摘要: Mesos爲不少不一樣的用戶場景都提供了精妙的,考慮周全的API。持久化卷是由新的acceptOffers API引入的特性。持久化卷讓用戶能夠爲Mesos構建數據庫框架,Mesos能夠在任何不可預見的故障和錯誤發生而且影響整個系統時,使數據持久化。本文選自《用Mesos框架構建分佈式應用》。數據庫

  直到最近,Mesos都僅僅可以運行無須向磁盤存儲數據的服務。這是由於沒有方法預留所需的磁盤塊。從Mesos 0.23版本開始,能夠預留磁盤了。
  咱們能夠將Mesos看成一個部署系統。若是MySQL數據庫可以自動將自身備份,而且按需建立新的副本,是否是很好呢?或者若是擁有一個簡單的,自服務的REST API,可以建立新的Riak和Cassandra集羣,又會怎麼樣呢?爲Mesos構建數據庫框架的工做從2014年就開始了。這些框架的問題是每一個主機都必須建立特別的數據分區,而且在Mesos以外加以管理。使用持久化卷,相似Apache Cotton(MySQL所用)以及Cassandra和Riak Mesos框架的項目就都可以獨立啓動和維護了。
  在Mesos的設計裏,磁盤空間是短暫的,而且是按任務隔離的。這一般是一件好事,除非用戶想要持久地保存數據。要解決這個問題,Mesos引入了一個新的磁盤資源的子類型,稱爲volume。volume是分配給一個任務的磁盤塊,而且掛載在特定位置。完成這一功能的API和掛載主機卷的Marathon API(詳見「掛載主機卷」部分),幾乎徹底一致。用戶甚至能夠建立不持久的卷,這在想將多個獨立磁盤暴露給Mesos時會頗有用。
  下面研究一下如何建立而且使用持久化卷。
  有兩個acceptOffers Operation用來建立以及銷燬持久化卷。不出意外地,它們稱爲Create和Destroy。僅僅可以在已經被預留的磁盤資源上建立持久化卷。一般,用戶會預留資源,建立卷,而且在單個acceptOffers裏啓動任務,以下面示例所示。
             圖片描述
  持久化卷資源和常規磁盤資源同樣,可是它帶有字段disk,設置爲合適的DiskInfo。DiskInfo給該持久化卷命名,這樣它可以掛載上,名字爲嵌套的字符串子字段persistence.id的名稱。DiskInfo的Volume必須使用RW模式(由於Mesos 0.24只支持RW)。Volume的container_path字段會指定容器在任務沙箱裏的掛載位置。
  持久化卷API是很新的功能,所以尚未任何生產環境框架用到它。它也有一些限制,好比卷必須一直掛載爲RW,而且沒有辦法暴露多個磁盤,也沒有任何磁盤或I/O隔離。即便添加了新特性和功能以後,也會保證該API的後向兼容性。所以,相似Apache Cotton的項目已經在其代碼基裏集成了持久化卷。
  本文選自《用Mesos框架構建分佈式應用》,點此連接可在博文視點官網查看此書。
                     【圖1】
  想及時得到更多精彩文章,可在微信中搜索「博文視點」或者掃描下方二維碼並關注。
                        圖片描述微信

相關文章
相關標籤/搜索