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】
  想及时得到更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                        图片描述微信

相关文章
相关标签/搜索