开发者社区> 问答> 正文

如何通过Mesos、Docker和Go,使用300行代码创建一个分布式系统?

如何通过Mesos、Docker和Go,使用300行代码创建一个分布式系统?

展开
收起
游客2ffnduxocc52u 2021-09-30 19:28:34 1261 0
1 条回答
写回答
取消 提交回答
  • 在之前,每一个新的分布式系统,例如 Hadoop 和 Cassandra ,都需要构建自己的底层架构,包括消息处理、存储、网络、容错性和可伸缩性。庆幸的是,像 Apache Mesos 这样的系统,通过给分布式系统的关键构建模块提供类似操作系统的管理服务,简化了构建和管理分布式系统的任务。Mesos 抽离了 CPU 、存储和其它计算资源,因此开发者开发分布式应用程序时能够将整个数据中心集群当做一台巨型机对待。

    构建在 Mesos 上的应用程序被称为框架,它们能解决很多问题: Apache Spark,一种流行的集群式数据分析工具;Chronos ,一个类似 cron 的具有容错性的分布式 scheduler ,这是两个构建在 Mesos 上的框架的例子。构建框架可以使用多种语言,包括 C++,Go,Python,Java,Haskell 和 Scala。

    在分布式系统用例上,比特币开采就是一个很好的例子。比特币将为生成 acceptable hash 的挑战转为验证一块事务的可靠性。可能需要几十年,单台笔记本电脑挖一块可能需要花费超过 150 年。结果是,有许多的“采矿池”允许采矿者将他们的计算资源联合起来以加快挖矿速度。Mesosphere 的一个实习生, Derek ,写了一个比特币开采框架(https://github.com/derekchiang/Mesos-Bitcoin-Miner),利用集群资源的优势来做同样的事情。在接下来的内容中,会以他的代码为例。

    1 个 Mesos 框架有 1 个 scheduler 和 1 个 executor 组成。scheduler 和 Mesos master 通信并决定运行什么任务,而 executor 运行在 slaves 上面,执行实际任务。大多数的框架实现了自己的 scheduler,并使用 1 个由 Mesos 提供的标准 executors 。当然,框架也可以自己定制 executor 。在这个例子中即会编写定制的 scheduler,并使用标准命令执行器( executor )运行包含我们比特币服务的 Docker 镜像。

    对这里的 scheduler 来说,需要运行的有两种任务—— one miner server task and multiple miner worker tasks。 server 会和一个比特币采矿池通信,并给每个 worker 分配 blocks 。Worker 会努力工作,即开采比特币。

    2021-09-30 20:30:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
应用 Docker 进行持续交付:用技术改变交付路程 立即下载
从Docker到容器服务 立即下载
构建基因数据应用生态系统—— docker in Bio/informatics 立即下载