使用
300
行代码创建一个分布式系统
构建一个分布式系统是很困难的。
它需要可扩展性、
容错性、
高可用性、
一致性、
可伸缩以及高效。为了达到这些目的,分布式系统需要很多复杂的组件以一
种
复杂的方式协同工作。例如,
Apache
Hadoop
在大型集群上并行处理
TB
级别的
数据集时,需要依赖有着高容错的文件系统(
HDFS
)来达到高吞
吐量。
在之前,每一个新的分布式系统,例如
Hadoop
和
Cassandra
,都需要构建自己
的底层架构,包括消息处理、存储、网络、容错性和可伸缩性。
庆幸的是,像
Apache
Mesos
这样的系统,
通过给分布式系统的关键构建模块提供类似操作系
统的管理服务,
简化了构建和管理分布式系统的任务。
Mesos
抽离了
CPU
、
存储
和其它计算资源,
因此开发者开发分布式应用程序时能够将整个数据中心集群当
做一台巨型机对待。
构建在
Mesos
上的应用程序被称为框架,
它们能解决很多问题:
Apache
Spark
,
一种流行的集群式数据分析工具;
Chronos
,一个类
似
cron
的具有容错性的分
布式
scheduler
,这是两个构建在
Mesos
上的框架的例子。构建框架可以使用多
种语言,包括
C++
,
Go
,
Python
,
Java
,
Haskell
和
Scala
。
在分布式系统用例上,比特币开采就是一个很好的例子。比特币将为生
成
acceptable
hash
的挑战转为验证一块事务的可靠性。
可能需要
几十年,
单台笔记本电脑挖一块可能需要花费超过
150
年。结果是,有许多的“采矿池”
允许采矿者将他们的计算资源联合起来以加快挖矿速度。
Mesosphere
的一个实
习生,
Derek
,
写了一个
比特币开采框架
,
利用集群资源的优势来做同样的事情。
在接下来的内容中,会以他的代码为例。
1
个
Mesos
框架有
1
个
scheduler
和
1
个
executor
组成。
scheduler
和
Mesos
master
通信并决定运行什么任
务,而
executor
运行在
slaves
上面,
执行实际任务。大多数的框架实现了自己的
scheduler
,并使用
1
个由
Mesos
提
供的标准
executors
。当然,框架也可以自己定制
executor