本篇文章3734字,读完约9分钟
Nefele是一个能够在分布式环境中有效地部署、扩展和监控流程的系统。
摘自:沃尔夫冈·卢·约翰[v1]2020年6月12日星期五13:21:59发表的一篇论文。
操作系统级和硬件级的虚拟化在云计算中扮演着重要角色。它使分布式环境中的自动化更容易,部署更快。
尽管虚拟化基础架构提供了一定程度的管理灵活性,但它们缺乏对分布式资源的实际抽象。在这样的环境中,开发人员仍然需要处理构建分布式软件系统的所有复杂问题。构建不同的业务流程系统来提供这种抽象。
然而,它们不能解决分布式系统固有的挑战,例如同步问题或故障恢复能力。
本文介绍了一个分散的流程编排系统nefele,它可以自动部署和管理集群中的各种流程,而不是容器/虚拟机。
Nefele受到单系统映像(ssi)愿景的启发,该愿景减轻了远程执行的复杂性,但同时保持了虚拟化基础架构的灵活性和性能。
Nefele为构建云本地应用程序提供了一套API,使开发人员能够在云环境中轻松构建、部署和扩展应用程序。我们在数据中心集群上实现并部署了nefele,并对其性能进行了评估。我们的评估显示,
Nefele能够在分布式环境中有效地部署、扩展和监控流程,并集成基本原语来构建分布式软件系统。Nefele为构建云本地应用程序提供了一套API,使开发人员能够在云环境中轻松构建、部署和扩展应用程序。我们在数据中心集群上实现并部署了nefele,并对其性能进行了评估。我们的评估表明,nefele能够在分布式环境中有效地部署、扩展和监控流程,并集成基本原语来构建分布式软件系统。Nefele为构建云本地应用程序提供了一套API,使开发人员能够在云环境中轻松构建、部署和扩展应用程序。我们在数据中心集群上实现并部署了nefele,并对其性能进行了评估。我们的评估表明,nefele能够在分布式环境中有效地部署、扩展和监控流程,并集成基本原语来构建分布式软件系统。
简介
对于多节点系统,分布式的复杂性可以对开发人员隐藏,这使得应用程序更容易开发、调试和操作。
构建分布式软件系统总是很复杂。在分布式系统中,进程运行在不同的网络计算机上,并通过在网络上传输消息来传输它们的操作,而没有任何全局时钟的概念。在这种环境中,有许多挑战,例如保持同步、一致性、确保可用性、弹性和可追溯性。此环境中的事件可能不会按预期顺序出现,系统的某些故障必须得到处理,并且节点可能与系统的当前状态不一致。许多在单个节点上运行良好的解决方案不再适用。
自20世纪80年代中期以来,单系统映像(ssi)的概念已被许多项目所实现,而提供这种假象或抽象的非现代硬件视图是其目标。然而,这些项目还没有被大规模采用,这主要是由于单节点结构的低性能和缺乏可扩展性。为了提供一个完整的unix接口,这些结构的模拟具有基本的局限性,这通常归因于不同节点之间的同步要求。此外,许多在单个节点上运行良好的技术在分布式环境中运行不佳。例如,在单个节点中,多个进程之间的内存共享是有效的,但在分布式环境中无效[2]。
x86平台上虚拟化技术的发展催生了云计算,在云计算中,用户根据服务模型租用一组分布式计算资源来部署他们的应用。尽管云平台提供了对分布式资源的简单且可扩展的访问,但是它们不能解决上述分布式软件系统的固有挑战。为了缓解这些问题,云提供商提供了广泛的服务和产品,这些服务和产品旨在在分布式环境中运行,并提供通常需要的功能,如日志记录、数据库、锁定、监控和存储。然而,云应用程序开发人员仍然必须仔细设计应用程序,以处理由底层系统的分布式特性所导致的许多复杂问题。
此外,许多这样的项目在内核级实现ssi特性,例如,作为一组补丁。这使得它很难跟上开源内核的快速发展。最后,为了满足不同应用程序的需求,ssi服务通常实现最严格的一致版本,例如分布式文件系统,尽管大多数应用程序实际上并不需要它。必须选择最小公分母来构建通用系统将严重影响性能。最后,ssi工作的一个优点是一个尺度通常不是全部。
Erlang/otp[3](开放电信平台)是构建分布式软件系统的成功途径。它是构建分布式、容错和高可用性系统的功能性语言和运行时。erlang模型的核心是将所有组件
多核机器有许多相同的问题。然而,在很大程度上,这个行业已经能够提供一个单一的核心系统的幻想,它可以作为一个单一的系统编程。
计算被放入高度隔离的进程中,这些进程之间不共享数据,只通过异步消息进行交互。Otp通过一组支持库和设计原则扩展了基本的erlang语言和运行时。
E.例如,运行进程的容器或虚拟机。这些进程以主机到主机的方式相互通信,除非它们在相同的执行环境中运行。执行环境中的进程可以使用操作系统(os)服务,默认情况下,这些服务基本上是不分布式的。为了简化开发分布式软件系统的任务,设计成在分布式环境中运行的服务被作为外部服务提供。通常,有许多这样的服务提供具有不同特征的相同功能,允许开发人员选择最适合任务的服务。
在本文中,我们扩展了[4]中的工作,并引入了一个分布式流程编排系统nefele,它可以在集群上执行和管理linux流程。受ssi减轻远程执行困难的愿景的启发,nefele采用了一些erlang/otp设计原则和机制来处理分布式软件系统。在nefele,除了虚拟化环境中的本机操作系统功能之外,开发人员还配备了一组类似于ssi的功能和编程API。这些附加功能为进程部署、执行、连接和监控其他进程提供了简单的编程接口,从而隐藏了分布式环境中进程部署和ipc的复杂性。然而,nefele并没有试图隐藏应用程序在分布式环境中执行的事实,所以它并没有限制开发人员在单个节点上使用当前可用的(或有效的)函数。在nefele中,进程是调度和执行的单元,也是消息传输的端点。与容器或虚拟机相比,进程是一个具有更高灵活性和可扩展性的增强单元。在erlang中,应用程序中的依赖关系和关系是由应用程序本身定义的,而不是使用外部部署图表和清单。
1592185367080
ssi模型如图1c所示。在ssi模型中,进程调度器执行类似于容器编排引擎的角色,但是,它直接部署和管理进程,而不是执行环境。这些进程直接相互通信,不需要任何底层主机的概念。Ssi操作系统本质上为开发分布式软件系统提供了必要的功能,如进程间通信(ipc)系统或一致的分布式文件系统。通常,用户不能对这些功能做出任何选择,她必须遵守系统提供的功能。反过来,系统必须实现这些功能中最严格的形式,以支持最严格的应用程序要求,例如,通过使用高度一致的分布式文件系统,而不是最终一致的系统。
Nefele的目标是一个混合模型,从每个模型中继承有用的方面。图1b显示了nefele的设计,阴影背景突出了与其他模型的重叠。Nefele采用了ssi关于共享进程空室、ipc、进程放置和有限操作系统服务集的思想,并通过查看底层单节点操作系统并与之交互,以及利用虚拟化基础架构中当前可用的工具来增强它。因此,nefele管理的流程可以从节点的本地功能和分布式ssi服务中获益。
本文基于ssi和erlang/otp,提出了一个分散的过程调度系统nefele。Nefele的目标是通过提供底层分布式资源的聚合视图和动态运行时信息(例如,运行过程的聚合列表),简化云本地应用程序的构建。有了nefele,开发人员可以在一个集群上以编程方式部署和管理应用程序,该集群部分抽象为一个节点。这是通过分布式控制平面来实现的,该平面跨多个节点与应用程序的进程进行协调和通信。Nefele实现了分布式过程管理,允许开发人员在分布式环境中生成、列出、监控故障、发送信号和控制过程。
在nefele中,不同进程之间的关系是由选定的编程语言定义的,而不是由外部定义的,如yaml模板。编程关系定义使得定制它们背后的逻辑成为可能。例如,开发人员可以实现自定义逻辑来确定何时以及如何扩展。
我们的评估表明,nefele能够有效地部署、扩展和管理分布式进程,根据任务大小和到达率,平均进程调度时间在10到20毫秒之间。在由15个节点组成的集群中,nefele每分钟可以处理30000个请求,平均调度时间不到50毫秒。
因为nefele的控制平面是分布式的,所以没有单点故障,系统可以通过网络划分等故障继续运行。采用监督树的过程容错模型,故障检测和处理时间低至20毫秒。
目前,nefele的alpha版本作为服务在我们的数据中心运行,并对内部用户开放。我们的用户正在部署多层分布式应用程序,测试nefele的开发和部署优势,并特别利用内置的ipc和故障转移机制。我们正在扩展nefele的更多功能,添加更多内部和外部服务,并进一步简化分布式应用程序的构建。我们还在更大和更异构的集群中测试系统,以发现和解决瓶颈。基于用户反馈,我们计划进一步重新定义api并改进现有功能的性能,例如在布局代理中应用机器智能和通过rdma减少ipc延迟。
请详细阅读这篇论文的pdf版本。这篇文章来自:arxiv/ABS/2006 . 2007200000006 . 20071 . 2007200006
来源:搜狐微门户
标题:Nefele介绍:云计算的流程监控协调系统
地址:http://www.shwmhw.com/shxw/9975.html