英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
网络浏览器和网络服务器中的流处理
摘要:最近提出的API定义WebRTC介绍了Web浏览器之间的点对点实时通信,允许除了传统的服务器端执行环境外,流媒体系统还将部署在浏览器上。虽然流媒体应用可以浏览器上运行,但仍然难以处理诸如临时断线、移动设备的能源消耗,以及潜在的非常多的异质对等体的加入和离开执行环境等影响流的质量因素。在本文介绍了分散控制的方法,其次是Web Liquid Streams (WLS)框架,一个新颖的流媒体框架。在Web浏览器、Web服务器和智能设备上运行的应用程序。考虑到部署环境的异质性和网络浏览器的波动性,我们实现了一个控制基础设施,它能够考虑到部署情况的限制因素和不可预测的工作负载,做出操作者迁移的决定。
1.引言
显示复杂的流处理拓扑所产生的实时更新的Web应用最近开始影响Web架构。Web浏览器不再局限于同步请求-响应的HTTP交互,现在可以与服务器(WebSockets)甚至直接与其他浏览器(WebRTC)建立全双工连接。这为Web浏览器提供了一个机会,它不仅仅是一个简单的视图可以提供数据流结果,还可以对数据流的处理进行操作。类似于正在进行的富互联网应用趋势,我们的想法是将一部分计算工作交给越来越强大的客户端。然而,这需要灵活地调整运算符,使其运行在一个高度异构的执行环境中,确定哪一个是最适合它们执行的位置,并处理频繁的中断、有限的电池容量和设备故障。
更详细地说,虽然利用WebRTC和WebSockets在Web浏览器上建立数据流应用是一项相对简单的任务,但在没有中央实体的情况下,对任意拓扑、断开和错误的部署进行管理可能会变得越来越困难。Web浏览器的不稳定性(其标签页可能随时被关闭)意味着系统应该能够重新启动,让操作员在其他可用的机器上工作。同时,CPU和内存的消耗以及数据流的速度应该进行人工管理,当操作者对主机浏览器的负担过重时,应该进行调节。当主机用完所有资源并造成瓶颈时,应将托管的流媒体操作者转移到其他可用的机器上。在智能手机或平板电脑等便携式设备存在的情况下,应特别注意,尽可能节省电池。
在本文中,我们展示了如何在Web Liquid Streams(WLS)框架中处理这些问题。WLS允许开发人员实现由部署在Web浏览器和Web服务器上的JavaScript操作符组成的非分配流处理拓扑。由于网络语言JavaScript的广泛使用,在任何支持网络的设备上部署和运行流应用都成为可能:从小型微处理器,到智能手机,再到运行Node.JS框架的大型虚拟化云计算集群。本文重点关注的是WLS分布式控制基础设施,它能够处理计算操作者的故障和断线,以及流式拓扑中的瓶颈。此外,它还负责优化拓扑结构的物理部署,通过在Web浏览器和Web服务器之间迁移和克隆运算符,以降低能耗,提高并行性。
WLS的第一个版本的RESTful API只支持在Web服务器集群上进行分布式流处理,之前已经在中进行了描述。在本文中,我们在之前的成果基础上,提出了WLS的第二个版本,它有以下新的贡献:
(1)一个分散的基础设施,用于在网络服务器和网络浏览器上部署数据流操作者图,以减少数据流的端到端延迟,同时执行给定的部署限制。
(2)一个能够处理数据流拓扑结构中的瓶颈的控制基础设施。
(3)一种用于克隆和重新定位操作者的技术,以动态并行计算密集型操作者,它可以利用志愿资源并对不可预测的工作负载变化做出反应。
本文的其余部分组织如下。第2节讨论了相关工作,第3节介绍了网络液体流框架,第4节描述了它的控制基础设施。第5节展示了对控制基础设施的初步评估,第6节是本文的结论。
2.相关工作
多年来,许多流处理框架已经被提出。在这里,我们将讨论那些对我们在WLS上的工作有启发的框架。Storm是一个由Twitter开发的无属性实时计算环境。流操作者由自定义创建的'spouts'和'bolts'定义,用于允许对流数据进行分布式处理。Storm提出了一个两方面的控制器基础架构来处理工人故障和节点故障。Storm只具有服务器端部署的特点,而我们在WLS中扩展了这一概念,将Web浏览器作为目标部署基础设施的一部分,并使用标准的Web协议来发送和接收数据。
D-Streams是一个框架,它提供了一组流转换,将流视为一系列在极小时间间隔上的确定性批处理计算。通过这种方式,它重用了批处理的容错机制,利用了MapReduce风格的恢复。D-Stream的特点是对故障进行重新配置式的恢复,这对我们的controller有启发;尽管如此,D-Streams的拓扑结构不能在运行时根据工作负载进行改变和调整。另一个相关框架是Google的MillWheel。MillWheel帮助用户大规模构建低延迟的数据处理应用,而不需要考虑如何在分布式执行环境中部署。我们的运行时工作在相同的抽象层次上,但针对的是更多样化、志愿计算式的提供资源集。
随着移动智能手机的快速发展,许多工作组都致力于提高能源效率,并探索如何通过云计算来处理能源密集型应用。使用MAUI或ThinkAir等方法,程序员对要加载的部分代码进行注释,运行时能够判断加载注释部分是否可以节省远程调用相应方法的客户端的能源。
一些研究致力于流媒体应用的自适应。中介绍了一个自适应优化器,其中作者为Storm引入了一个在线和在线调度器。中提出了另一种优化Storm的方法,作者提出了一种优化算法,该算法可以找到数据流中每个Storm节点的批大小和并行度的最佳值。该算法自动为拓扑找到最佳配置,避免了手动调整。我们的工作非常相似,但是没有满足拥有完全透明对等点的前提,因为WLS无法从现有的Web浏览器html5 api访问机器的完整硬件规范。[4]中采用了一种更通用的方法来描述流优化,作者提出了一系列流处理优化,其中一些已经应用到我们的框架中(即,操作符分裂、融合或负载平衡)。
liquid software Manifesto中引入了liquid software的概念,作者用它来表示无缝的多设备用户体验,软件可以轻松地从一个设备流向另一个设备。同样地,在[16]中,我们描述了一种用于liquid Web服务的体系结构样式,它可以利用异构计算资源进行弹性伸缩。在本文的例子中,液体质量应用于软件组件的部署。在本文中,我们将重点放在流软件连接器上,以及如何描述其液体行为。
3.Web Liquid Streams框架
WebLiquidStreams(WLS)框架帮助开发人员创建流处理拓扑,并跨Web服务器、Web浏览器和智能设备运行它们。本节介绍WLS提供的主要抽象,以及如何使用它们来构建用JavaScript编写的流式操作符的拓扑。为了构建流应用程序,开发人员使用以下构建块:对等机是承载计算的物理机器。任何支持Web的设备,包括Web服务器、Web浏览器或微处理器或SOR,都有资格成为对等设备。在流应用程序中,操作员接收数据,对其进行处理并将结果转发给下游。每个操作符都关联到一个JavaScript文件,该文件描述了处理逻辑。拓扑定义了一个操作符图,有效地描述了从生产者操作符到消费者的数据流。当流运行时,拓扑结构可以动态地改变。对等点可以一次承载多个运营商,同一对等点上的运营商可以是不同流拓扑的一部分。运营商和对等方的组织方式是动态的,因为运营商的数量及其资源使用情况在运行时会发生变化。操作员可以冗余地部署在多个对等机上,以提高可扩展性和可靠性。
在实现操作符时,开发人员不需要担心通信协议,因为WLS运行时的任务是根据拓扑描述和部署约束将操作符部署到物理主机上,从而将实际的流通信通道抽象出来。为此,运行时包括一个控制基础设施,能够通过操作符迁移处理断开连接和负载波动。
3.1液体流处理
我们使用Liquid Software的隐喻来可视化数据元素流经Operators的属性,这些Operators部署在平台用户所拥有的大量和可变的网络对等点上。对等点的性质可以是异构的:有大量存储和RAM的大型网络服务器,有运行在智能手机或个人计算机上的网络浏览器,也有支持网络的微控制器和智能设备,如Raspberry PI或Tessel.IO。系统的用户可以通过Web浏览器或Web服务器连接到系统,以合作的方式共享自己的资源。WLS能够通过八卦算法处理连接和离开对等点的颤动,该算法在所有对等点中传播连接的对等点的信息,在那里可以部署Operator。
当液体根据容器的形状进行调整时,WLS框架工作会调整操作者和数据流速率以适应可用资源。当资源需求增加时(例如,由于流速的增加,或处理某些流元素所需的处理能力的增加),控制器会分配新的资源。同样,一旦流资源需求减少,这些资源将被弹性地取消分配。
3.2Operator克隆和迁移
我们在Operator上实现了两种基本机制:克隆和迁移。Operator克隆是在另一个对等机上创建一个完全相同的Operator副本的过程,通过提高并行度来解决瓶颈问题。一旦瓶颈解决了,这个过程就可以反过来,而且不需要让多个对等机忙起来。
迁移是在运行时将一个Operator从一个对等机迁移到另一个对等机的过程。当一个对等体表示愿意离开系统,或者当一个设备的电池电量达到预定义的阈值时,就会触发WLS中的迁移。在这种情况下,操作者会被迁移到其他对等设备上,以防止在电池完全耗尽时出现断开连接的错误。在迁移过程中,控制器在指定的机器上创建这些操作者的副本,并在给定的拓扑结构中执行与其他操作者的绑定。考虑到[18],WLS在新的执行环境上对迁移的代码进行重新初始化。
4.分散式控制基础设施
通过WLS API上传一个包含拓扑描述的文件,系统用户可以在可用的对等节点子集上部署和执行他们的拓扑,这些节点将由WLS自主和透明地管理。拓扑结构也可以通过系统的命令行界面或图形化的监控工具手动创建。当收到拓扑描述或手动配置命令时,系统会检查当前可用资源是否能满足请求。如果是这样的话,WLS就会在指定的对等节点上分配和部署Operator,并启动它们之间的数据流。在本节中,我们将介绍自动控制基础设施,它通过相同的WLS API自动部署拓扑并发送重新配置命令。每个Web服务器对等节点都有自己的本地控制器,它负责处理连接到它的Web浏览器对等节点的连接和断开,以及运行在它上面的Operator的并行化(通过分叉Node.js进程)。类似的控制器被部署在每个Web浏览器对等节点上,在那里,它平行化操作员的执行,产生额外的Web工作者。同样,它也会监控本地环境条件,以检测瓶颈、电池短缺或断线,并向Web服务器上的核心响应控制器发出信号。这就建立了一个分层控制基础设施,每个操作员由一个单独的实体管理,并由负责管理整个拓扑结构的生命周期和调节性能的控制器共同管理。
4.1部署约束
控制基础设施要处理对等体的断线、负载波动和运营商迁移。在本文中,我们的目标是控制器能够在对等体之间无缝地部署、迁移和克隆Operator,以面对断开连接,同时还能提高拓扑结构在延迟和能耗方面的整体性能。为此,控制器会考虑到拓扑描述中指定的约束列表。这里按重要性降序介绍这些约束条件:i)硬件依赖性,例如,控制器必须考虑到对等设备上存在特定的硬件传感器或执行器,作为第一优先部署约束条件。使用陀螺仪传感器的操作员不能从使用这种传感器的智能手机迁移到Web服务器上。ii)白名单或黑名单。运营商可以选择性地与必须(或不必须)用于运行它们的已知对等体列表相关联。该列表可以使用IP地址范围指定,并且应该足够大,以便在一个对等体出现故障时,仍然可以找到另一个对等体来替代它。iii)电池,每当一个对等体出现电池短缺时,控制器应该能够迁移在该对等体上运行的操作员,以避免完全耗尽对等体的电池。同时,不应针对低电池水平的对等体进行迁移操作。iv)CPU。对等体当前的CPU利用率必须为部署另一个操作者留有余地。由于JavaScript是一种单线程语言,所以我们使用CPU核数作为对等体可以提供的并行水平的上限。
这些约束条件用于选择一组候选对等体,然后根据附加标准对其进行排序,其目的是确保降低流的端到端延迟,同时使整体资源利用率最小化。这对于降低分配给每个拓扑的资源成本,同时保持良好的性能水平非常重要。
4.2排名功能
控制器考虑以下指标,为每个Operator选择最合适的对等体:i)能源消耗可以优化,例如,当操作员的计算对依赖电池的对等体造成太大负担时。在这种情况下,可能会发生迁移,将繁重的计算从移动设备转移到桌面或网络服务器上。因此,优先考虑充满电的移动对等体或没有电池的固定对等体。ii)可以通过克隆瓶颈Operator来实现并行。例如,如果计算非常耗费CPU,而承载Operator的对等体不
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[259416],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。