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