译文如下:
现在有很多新型应用层出不穷,这些应用不再仅限于在一台服务器上工作,更多地会是在数据中心多个服务器之间进行工作。例如集群计算系统Apache Hadoop和Apache Spark,消息处理系统Apache Kafka,键值存储数据库系统Apache Cassandra等。这些新型应用都属于分布式应用,同样地为数据中心编写分布式系统也日渐变得流行起来。但是,要开发者编写分布式系统是困难的,运营分布式系统对运营人员来说也是是困难的。为什么呢?因为开发者和运营者往往容易被一个错误的概念误导了:机器。
一、发展瓶颈 机器是错误的抽象概念
机器概念会使运行者进行系统部署时,以最简单和保守的单机单应用的方式进行。这不利于资源优化,因为机器和应用彼此之间没有做到精确匹配,数据中心变得非常静态化和低延展性。
同时企业也不得不聘用大量人员为这些单应用机器进行大量的人工操作,而人在这过程中会逐渐成为新系统新应用的发展瓶颈。
数据中心operating system(以下简称OS)正当其时
首先想象下以数据中心的方式来在个人电脑上运行程序。每当我们启动浏览器,我们不得不指定需要使用哪个CPU,需要寻址哪个内存模块等等。得益于强大的操作系统,我们都不必为这些而烦恼。
二、理想中的数据中心的操作系统应该是什么样的呢?
从运营者角度来说,数据中心OS可管控数据中心的所有机器并把它们聚集成一个巨型资源池来运行程序。所有应用都可在任意可用机器上运行。
从开发者角度来说,数据中心OS可作为应用和机器之间的中间件来运行,提供公共操作库来帮助和简化分布式应用的搭建。
它不需要直接替代用Linux或其它常用的主机OS,而应该是能够提供一个构建于主机OS之上的软件堆栈,用于进行资源管理和进程隔离。
数据中心Operating System API
该API将有助于分布式应用进行资源的分配和销毁,启动、监控、和销毁进程,等等。
基本操作示例
数据中心OS的两个基本操作是服务探索和服务协调。不同于单主机只有相当少的应用需要知道在同一主机上运行了多少个应用,服务探索是分布式应用的基本需求。换句话说,分布式应用应具有高可用性和高容错能力。
这两个基本操作一方面简化了部署工作,另一方面也增强了可移植性。它使得无需重写代码来变更底层实施方式。
部署应用的新方式
数据中心OS应提供一个软件接口来替代人工接口来与开发者进行交互,进行应用的部署工作。开发者借助数据中心OS(例如CLI或者GUI)来执行应用,程序执行则借助数据中心OS API。
这样的服务接口有助于分离运营者和用户的关注点:运营者为每个用户分配了具体的可用资源,用户可执行任意程序使用任意可用资源。由于大多数的分布式应用具有复杂的调度需求(例如Apache Hadoop)和特殊的错误修复需求(例如数据库),使用软件代替人工干预是对数据中心OS来说是有决定性意义的。
“云”不是一个OS
——我们为什么需要新的OS呢?IaaS和PaaS不是已经能解决这些问题吗?
IaaS目前还仅着重于机器层面的操作,被设计用于进行人工操作,提供的是虚拟机的操作。它可使一个机器变成多个机器,但是没有提供能够帮助开发者进行分布式应用搭建的基本操作。
PaaS虽然脱离了机器层面,但是仍然着重的是人工操作。很多PaaS解决方案都含有很多间接服务和整合能帮助搭建分布式应用,但是不能实现与其它PaaS方案的可移植操作。
分布式系统的核心:Apache Mesos
Apache Mesos是由加州大学伯克利分校的AMPLab首先开发的一款开源群集管理软件,其提供了一个便捷的API用来创建和运行分布式应用程序。目前已经有不少的分布式系统直接构建于Mesos之上,包括:Apache Spark,Apache Aurora,Airbnb’sChronos以及Mesosphere’s Marathon。除此以外,还有多个流行系统与Mesos相连运行于其之上,例如:Apache Hadoop,Apache Storm,Google’s Kubernetes等。Twitter和Airbnb等企业已经开始把Mesos应用于数据中心的运营中。(推荐阅读:Mesos渐入主流)
然而Mesos还在发展中暂时不能算一个完全独立的数据中心OS,现在还需要与其它分布式系统配合使用。从模块化的角度来说,以Mesos为基础的数据中心OS的构成是这样的:核心(Mesos),分布式初始化脚本(Marathon/Aurora),计划任务工具(Chronos)等。
PS:数据中心对操作系统的需求正在不断增加,但真正关于数据中心操作系统的开发仍然众说纷纭。