我不是 Rocks 用户或专家,我在Mesosphere工作。这些评论是基于研究,而不是对 Rocks 的深入体验。所以把这个和一堆盐放在一起......如果有人知道得更好,我很乐意接受更新。
Rocks Cluster Distribution看起来像是为超级计算机设计的传统分布式操作系统,不同之处在于它运行在现有操作系统上,而不是使用自己的微内核。与旧的分布式操作系统(如 Plan 9)相比,这具有几个进化优势,但并非旨在利用调度和超大规模计算方面更现代的进步。
到期
Rocks 肯定比 Mesos 更成熟。这既是优点也是缺点。
我认为最好的看待它的方式是,Rocks 解决了学术界和政府在大约 2000 年左右遇到的问题,在 VMware 将虚拟化带给大众之前,在 Chef、Puppet 和 Ansible 使集群配置变得普遍之前,在 Google 和 AWS 拥有地球之前 -跨越各大洲数据中心的超大规模计算机,在 Hadoop 普及 map/reduce 和分布式计算之前,在敏捷入侵企业公司之前,在 iPhone 将超级计算机放入每个人的口袋之前,在微服务让单体应用成为过去之前,在 Docker 普及容器化之前,在物联网普及之前鞋子和恒温器中的微芯片。过去 15 年的所有这些进步意味着人们的问题已经发生了重大变化。
梅索斯只有 5 岁。所以它比 Docker 和 Kubernetes 更成熟,仍然支持非容器化的原生进程(它们被透明地包装在一个可配置的隔离容器中),但多年来已被 Twitter 和 Apple 等数十家公司大规模用于生产。
新并不总是更好,但环境变化非常快,将新想法融入旧设计变得越来越难。
调度
现代集群任务调度器(Hadoop YARN、Mesos、Kubernetes 等)。允许在运行时调度、监控、重启和重新调度任务。然而,Rocks 需要在每个节点上从 RPM 重新安装。通常,必须将GRID 计算系统分层,以便实际有效地使用资源。
另一方面,Mesos 使得编写客户调度程序来处理运行时任务和应用程序生命周期管理变得更加容易。已经存在几个非常通用的 Mesos 调度程序来处理常见的应用程序生命周期(Marathon、Aurora 等)。Cassandra、Kafka 和 Spark 等其他分布式应用程序有自己的自定义调度程序来处理特定于业务逻辑的生命周期管理,尤其是与持久数据、排水管清理和自动缩放相关的管理。
超大规模
Rocks 旨在支持单一系统映像的前提,并通过使集群对运行在集群上的应用程序不可见来实现这一点。这听起来像是一个了不起的壮举,但在实践中它的效率非常低,导致不可预测的性能,并且没有提供足够的 API 来处理集群操作的所有复杂性。
与此同时,谷歌、亚马逊和其他公司正在投资于超大规模计算,这允许以适中的成本承受巨大的增长,而无需重新构建其基础设施、平台或软件。
Mesos 提供了一个新的抽象层,而不是试图模拟较低级别的抽象(如 POSIX 和单机操作系统)。因此它能够更好地处理集群和节点生命周期事件。
套接字与 TCP/IP
Rocks 应用程序使用 POSIX 套接字进行通信。虽然这实现了很多低级别的灵活性,但套接字的设计并不能像网络协议那样容忍故障。与传统的单体应用不同,现代微服务使用网络通信作为其主要的通信形式。这种极端解耦的新架构范式使得应用程序不需要一起运行,而是使用服务发现通过网络找到彼此。因此,现代集群不需要容纳多节点套接字流量,这使它们能够显着提高可靠性和容错性。
状态存储
Mesos 使用 Zookeeper。Rocks 使用 MySQL。
容器
Mesos 允许但不要求工作负载使用容器镜像。您可以轻松地压缩您的进程,Mesos 会将其下载到需要它的节点。Mesos 可选地支持 Docker 容器,但默认是 Mesos 容器运行时,它具有可配置和可插入的隔离级别。
直流/操作系统
Mesos 不是操作系统。它实际上更像是一个具有主控和代理配置的分布式内核。如果您真的想与另一个分布式操作系统进行比较,请查看DC/OS,它填充了 Mesos 周围的许多功能,使其成为您数据中心的操作系统。