没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记107(2004)87-101www.elsevier.com/locate/entcsOverView:分布式系统Travis Desell Harihar Narasimha Iyer Carlos Varela计算机科学系伦斯勒理工学院特洛伊,纽约12180,美国http://www. CS. rpi。edu/wwc/亚伯·斯蒂芬斯犹他大学科学计算与成像美国犹他州盐湖城84112摘要可视化、测试和调试分布式系统是一项具有挑战性的任务,传统的软件工具无法很好地解决这一问题。OverView是一个基于事件的Eclipse插件,它提供了分布式Java虚拟机上运行的系统的运行时可视化。Eclipse中的编码和调试工具通过可视化地表示程序的静态组件(包、类和接口)以及程序的动态组件(对象、线程和调用堆栈),使编写软件更容易访问。OverView in-通过创建一个类似的可视化工作区,并对分布式系统进行适当的抽象,组件命名、状态、位置、远程通信和迁移。Overview是一个通用的可视化框架,它使用实体规范语言(ESL)使开发人员能够将高级并发和分布抽象映射到低级Java线程,网络连接和对象。保留字:分布式系统,在线可视化,动态程序重构1介绍许多分布式系统都是使用抽象来设计的,这些抽象创建了独立于系统中各个组件位置的统一视图。当考虑移动性时,这种统一的视图对于透明性特别有用,并且在程序执行期间可能会重新配置系统组件1571-0661 © 2004由Elsevier B. V.出版,CC BY-NC-ND许可下开放获取。doi:10.1016/j.entcs.2004.02.05088T. Desell等人理论计算机科学电子笔记107(2004)87模型实体容器通信事件移动性事件行为者演员剧院消息传递演员迁移移动环境条件过程环境环境输入/输出流程驱动迁移Petri网令牌地方n/a过渡击发RMI/CORBA对象JVM方法调用n/aJ2EEJavaBean容器HTTP请求n/a表1分布式编程模型的示例事件类型。寿命用于Java环境的常规分析和调试工具,包括随Eclipse开发平台分发的工具,限制开发人员一次只能检查一个虚拟机。要使用这些工具检查整个分布式程序,开发人员必须使用多个调试器实例,将每个调试器实例单独附加到单个虚拟机。这种划分使得系统的全局状态难以直观地理解,并使测试复杂化,因为开发人员的原始设计提供的统一视图当试图可视化一个分布式系统的状态时,会出现一些问题,这些分布式系统是用高级抽象设计的,比如参与者[1]、过程[17,8]或移动环境[3];因为大多数工具缺乏对这些抽象的第一类支持。表1中显示了一些示例抽象。例如,传统的分析器提供动态信息的数字摘要,例如在对象和类级别执行方法或信息所花费的时间长度。为了在更高的层次上分析系统,开发人员必须在运行时确定哪些较低层次的对象这个过程非常耗时,并且部分降低了使用更高级别抽象的实用性;特别是对于可视化。大多数调试和可视化系统仪器的代码可视化,导致程序执行性能的大幅下降。这也导致不太准确的可视化,因为当系统以较慢的速度运行时,开发人员试图调试的错误和竞争条件通常不会发生。在可能需要在可视化和可视化JVM之间进行同步的大规模系统上,这种性能冲击会严重降低大规模在线分布式系统可视化工具的可行性。尽管如此,许多分布式系统T. Desell等人理论计算机科学电子笔记107(2004)8789是长期存在的,因此需要在线可视化工具。我们的方法是开发一种语言来描述分布式系统的抽象的统一视图。开发人员将能够保留和利用他们的高层次抽象时,可视化分布式系统的测试,调试和优化的目的。通过具有从高级抽象到低级Java代码的映射,可视化不需要限于任何特定的抽象范例。此外,这种映射还使代码的插装能够针对在更高抽象级别上真正重要的事件。 这种选择性的插装有助于制作侵入性更小的可视化工具,从而提高可伸缩性。在可动态重构的分布式系统中,由于程序员和用户的手动命令,一些组件可能会被创建、销毁或迁移到不同的位置,或者出于诸如负载平衡或对底层网络拓扑中的故障的容忍等目的,由中间件层自主地创建、销毁或迁移。组件也可以相互通信,通信的范围和目的地对于分布式系统开发人员来说是有价值的信息提供分布式系统中组件的位置和行为的信息可视化可以导致更健壮和更高性能的系统。Eclipse是一个开放源码的集成开发环境(IDE),具有可扩展的体系结构。IDE可以通过提供称为插件的模块来扩展,这些插件为开发人员提供了一个特定的工具。插件是用Java编写的,可以很好地集成到Eclipse平台中。OverView是一个Eclipse插件,它为可动态重构的分布式系统程序员和用户提供了一个工具,可以在任何时间点查看系统的全局状态。它既支持在线动态可视化,也支持分布式系统中的事件可以被记录并在未来回放的在线方法。2相关工作在Java程序执行的可视化和分析领域已经做了相当多的工作(关于调查,参见[9])。Jinsight [12]对Java虚拟机的特殊仪表化版本产生的跟踪信息进行可视化。类似地,由Walker等人开发的系统。[16]使用程序事件跟踪来可视化程序执行模式和基于事件的对象关系,如在JavaScript中查看的方法调用。这些系统只支持一种在线模式,在这种模式下,程序执行的轨迹被可视化。它们也不是专门为可视化分布式系统而设计的90T. Desell等人理论计算机科学电子笔记107(2004)87可视化工具分布式程序执行O型线可视化在线可视化高级抽象CelsNYNYDejaVuYYNNJinsightNYNNJiveNNYNHy+YYNN概述YYYY表2不同类型的程序可视化。Jive [10]提供Java程序的在线可视化。它是一个动态分析程序数据的软件可视化框架。Jive只支持非分布式系统。Sundergrass提出了一种针对分布式调试和监控的方法,其中程序员使用关系代数查询来跟踪运行时动态[13]。DejaVu是一个确定性Java重放实用程序,通过确定性重放非确定性执行,支持理解和调试多线程[2]和分布式[6] Java应用程序DejaVu不支持动态可视化,而是不同VM执行的重播。对程序进行仪表化,以便在后续分析中对关键调度检查点进行分析和重新跟踪。[4]中提出的Hy+系统通过重放运行时记录的跟踪来帮助理解和调试分布式程序上面提到的大多数可视化显示了关于单个类和对象的细粒度执行信息它们缺乏从低级对象到高级抽象的映射Se fika等人[11]允许开发者利用粗粒度的系统信息来生成可视化。在他们的技术中,开发人员可以将抽象引入系统插装过程。然后,抽象可以用作几个可视化的基础,不同的粒度对被可视化的架构Walker等人[16]描述了一种根据用户选择的系统的高级视图进行可视化的系统它允许对用于压缩动态信息的抽象进行轻量级更改。Lencevicius [7]使用动态程序信息来调试在线程序,通过在程序运行期间连续检查对象间关系T. Desell等人理论计算机科学电子笔记107(2004)8791Fig. 1. OverView我们的工作是独一无二的,因为它支持分布式系统的在线和在线可视化。它还允许通过特定语言轻松映射高级抽象。表2比较了上面讨论的一些不同系统。3可视化架构分布式系统的可视化必须是高效和非侵入性的。当程序的速度降低时,许多竞争条件将不会出现。我们开发了Overview Plug-in Architecture,如图1所示,这是一个分布式系统可视化的模型。这种架构试图通过OverView的实体规范语言(ESL)实现最小的入侵ESL提供了一种简单的语言,可以将高级抽象映射到低级Java代码。第4节对ESL进行了深入描述。OverView插件使用分布式系统的实体规范来检测系统字节码插装器为分布式程序中的每个JVM创建一个插装的配置代理(IPA)。OverView插件将注册它92T. Desell等人理论计算机科学电子笔记107(2004)87实体UniqueBodyUnique ByDeclaration::=::=::=实体IDENTIFIER是名称实体{UniqueByDeclaration(WatchDeclaration |WhenDeclaration)*}价值独特;Watch宣言::=手表IDENTIFIER是值;When声明::=何时(开始)|finish)MethodSpecification send EventDeclaration[ExceptionSpecification,ExceptionSpecification];方法规范::=IDENTIFIER([Parameter(,Parameter)*])异常规范::=在异常时IDENTIFIERsendEventDeclaration参数::=名称标识符名称::=IDENTIFIER(. 标识符)*事件声明::=EventType(([Value(,Value)*])eventType::=创作|删除|迁移|更新|通信|误差值::=字面|exception|IDENTIFIER)(. |IDENTIFIER) (. ValuePart)+ValuePart::=IDENTIFIER [([Value(,Value)*])]图二. 实体规范语言语法我希望看到。此外,插件将向其他IPA注册某些IPA这些投资促进机构将按层次结构行事,以压缩发送给数据收集器的信息,从而减少总体负载。投资促进机构收集档案信息,并将其发送给每个注册的数据收集者或投资促进机构。投资促进机构还可以向其他投资促进机构登记,从而建立一个层次结构,以压缩最终发送给数据收集者的信息量。这种方法提供了可伸缩性,并允许多个OverView插件同时可视化分布式系统数据收集器接收事件并将其发送到事件映射器,事件映射器定期更新世界视图并将事件存储到历史数据中。历史数据可以保存到磁盘上,并用于在线回放事件。IPA、事件映射器、历史数据和世界观在第5节中有更详细的描述。4实体规范语言OverView的实体规范语言(ESL)允许开发人员根据这些实体所做的动作来定义实体和事件。这些实体基于分布式计算模型的概念;实体创建/删除,包含,迁移,状态更改,通信和错误。通过将这些概念映射到低级Java代码,ESL提供了一种将高级抽象转换为低级Java代码的通用方法。这提供了用于可视化的同质模型。ESL模型的简单性反映在语言中,如图2和图3所示。ESL为实体提供了五种类型的声明:• unique by提供了将多个对象声明为单个标识的能力,因为分布式系统中的对象可以由多个T. Desell等人理论计算机科学电子笔记107(2004)8793实体Actorissalsa.language.Actorunique by this.uan.toString();当完成绑定(UAN uan,UAL ual)时发送创建(ual.toString());当完成绑定(UAN uan)时发送创建(this.ual.toString());当finishfinalize()发送Deletion();当完成migrate(UAL ual)时,发送Migration(ual.toString())on exceptionMigrationException sendError(exception),publicvoid onDestination();当完成发送(消息消息)时,sendCommunication(message. getTarget());}图三. SALSA演员的ESL示例。对象在其生命周期中跨各种JVM运行。这个声明指定了一个唯一的字符串标识符来描述实体。• contained by在可视化中支持将一个实体包含在另一个实体中。• watch指定可视化级别的speci fic属性应该反映对speci fic Java对象实例成员的所有更改。此属性将由OverView监控,并且每当修改监控对象或属性时,事件将发送到可视化层。• when描述基于实体执行的操作的事件触发器start和finish指定事件应该在方法调用(或构造函数)的开始或结束时触发然后,声明继续描述发送到可视化的事件,以及事件将包含的• on exception指定当被监视的方法或构造函数抛出异常时要采取的操作(可选)。可以用when声明指定的六个事件是:• creation(String containerId)指定实体的创建,将包含的容器或实体作为参数。• deletion()指定删除实体。• migration(String targetContainerId)指定实体从一个容器移动到另一个容器,将实体移动到的容器作为参数。• communication(String entityId)这指定了两个实体之间的通信,并将与之通信的实体作为参数。• error(异常异常)这说明在某些情况下发生错误{94T. Desell等人理论计算机科学电子笔记107(2004)87实体并将抛出的异常作为参数。• update(String item,Object value)指定实体的状态已经更新,以及更新的值和该对象的标识符。这些事件通常由监视声明在幕后使用。此事件的参数是状态中已更改部分的名称以及现在已变为的值图3显示了使用SALSA编程语言[15]的参与者模型[1]在SALSA语言中,参与者绑定到一个位置并进入分布式系统。 绑定后,参与者可以迁移到系统中的其他位置。 OverView要求实体的ID为字符串。该规范还指定了如何将异常发送到可视化层。this关键字表示以下标识符是该实体的值或方法局部变量。 如果不使用这个标识符5初步实施和结果5.1ESL和字节码插装OverView插件利用JJTree软件解析ESL并构造适当的Java类,为ESL中的各种事件插入适当的profiling语句。这些配置文件语句包括将有关上述事件的信息传递给IPA。这允许OverView插件可视化源代码不容易获得的程序,只要有适当的实体规范。5.2仪器化增稠剂插装的分析代理通过插装的分析语句从其JVM中的实体接受分析信息。然后,它将此信息转发给每个已注册的OverView插件。实体的创建、删除和迁移以及错误报告都将立即转发到OverView插件,以提供分布式系统的准确画面。这些事件通常不如实体更新和通信频繁,实体更新和通信在IPA处排队并定期分组发送到插件,以限制插件上的负载连接后,OverView插件指定发送通信事件的频率。OverView插件根据需要发送实体状态请求,从IPA检索信息这种方法是非常无干扰的,因为它不会阻塞JVM,只检索有关单个实体的信息,T. Desell等人理论计算机科学电子笔记107(2004)8795图四、使用同步IPA的JVM的程序流程图五、使用异步IPA的JVM的程序流程而不是要求将更新事件的每个实例报告给插件。OverView插件可以请求将所有更新事件转发到其数据收集器,以便在创建历史数据时存储更新事件。IPA和数据收集器使用SALSA编程语言[15]实现,并通过96T. Desell等人理论计算机科学电子笔记107(2004)87见图6。 OverViewSALSA这使得IPA和数据收集器可以轻松地在它们之间发送事件,仅在需要时SALSA程序被预编译成Java代码,而profiling语句包括在IPA生成的代码上调用静态方法。当对字节码进行检测时,开发人员可以指定IPA同步或异步操作。为了保持一致的全局状态,创建、删除、更新、迁移和错误事件必须同步操作(如图4所示),阻塞直到插件接收到事件,直到JVM可以继续执行程序。大多数基于JPDA的调试器都以这种方式运行;然而,它会严重影响分布式程序的运行。为了解决这个问题,IPA可以异步运行(如图5所示),发送事件并允许JVM继续运行。如果接收到的创建、删除、迁移或错误事件没有按顺序排列,这可能会导致全局状态暂时变得不一致。这些事件很少发生,异步发送事件可以显著减少提供可视化的开销。5.3事件映射器和历史数据事件由数据收集器检索,数据收集器将它们转发到事件队列。这些事件被传递到可视化状态,T. Desell等人理论计算机科学电子笔记107(2004)8797见图7。 OverView世界视图的快照。决定了当前的世界观。此外,事件队列将事件组传递给历史数据并存储到磁盘。当插件上的负载较低时,会定期执行此操作,以便不妨碍可视化的速度。以可视化然后它绘制世界视图,表示由插件设置确定的全局状态。5.4世界观OverView插件可以通过多种方式显示分布式程序的视图。实体显示为圆圈,可以单击以显示状态数据,这些数据由更新事件确定并从实体所在的IPA中检索。 图元位于其他图元中,显示为正方形。它们充当实体的容器,这些实体可以在这些容器之间迁移。实体之间的通信由线表示,其颜色映射为蓝色(用于低通信量)到红色(用于高通信量)。线的宽度决定了实体之间通信的平均时间:宽,用于快速通信,细,用于慢速通信。实体在无错误操作时显示为蓝色,在发生错误事件时显示为红色。可以点击实体来确定错误。这种世界观的一个例子是98T. Desell等人理论计算机科学电子笔记107(2004)87见图8。 概述历史视图的快照。如图7所示。由于OverView插件可视化了分布式程序,开发人员可以开始和停止记录事件以创建历史数据。这个历史数据可以在以后以与在线可视化相同的方式进行查看,如图8所示,使用一个额外的滚动条可以暂停可视化并在时间上向前或向后移动。这允许开发人员以更慢更细粒度的方式研究分布式程序中发生的事情,特别是如果所有更新事件都被请求。5.5使用OverView实现我们在使用SALSA编程语言编写的分布式程序上测试了我们的实现[15]。OverView原型能够成功地可视化不同试运行中的演员创建、删除和迁移。它还可以捕获参与者的状态,具体为参与者的邮箱大小。图7显示了在五个不同的容器上运行的SALSA程序的屏幕截图,特别是剧院,显示为正方形。这个系统中的实体是演员,显示为圆圈。图8显示了同一个SALSA程序的屏幕截图,显示了从在线可视化中获得的历史数据。 底部的滚动条允许开发人员暂停或向前或向后移动可视化。随着历史观的进步,更多的行动者被创造出来T. Desell等人理论计算机科学电子笔记107(2004)8799并进行迁移,得到与图7相同的视图。6讨论分布式系统的动态可视化提出了许多挑战,包括:• 从分布式虚拟机接收的较低级对象产生的事件中可视化高级并发抽象的能力• 对非侵入性的需要,即,为了可视化目的而插入到分布式系统组件中的任何工具,不应当显著地改变分布式系统作为整体的行为• 需要扩展到大量互连节点,但同时提供分布式系统的统一视图• 可视化工具和分布式系统的同步,使得由于负载平衡或容错策略而执行的系统中的动态重新配置在可视化层以适当和及时的方式得到反映。在本文中,我们已经描述了我们的初步工作的OverView,Eclipse扩展提供了一个通用的框架,为在线可视化的动态可重构的基于Java的分布式系统。生成的关键是提供一种实体指定语言,使开发人员能够将高级抽象映射到低级事件。作为这种通用语言方法的结果,分布式系统的可视化可以在高级别上执行,并且可以扩展,因为只有与可视化目的相关的事件才需要被仪表化。我们已经测试了我们的框架与分布式程序实现SALSA,一种语言的基础上的演员模型,产生Java代码。我们已经成功地可视化了SALSA计划的关键动态重构方面,在开发和测试规范以可视化更细粒度的操作(如消息传递)方面仍有工作要做。我们还需要为额外的并发模型创建实体规范,以测试框架未来的工作包括以客观和可衡量的方式评估所提出的可视化框架的有效性,性能和可扩展性。OverView不仅可以在运行时实现分布式系统的可视化,还可以尝试使用新的语言结构进行高级分布式系统编程。协调的编程抽象可能包括分层的参与者组[14]和分布式事务的不同概念[5]。控制和操纵100T. Desell等人理论计算机科学电子笔记107(2004)87这些系统的组件在运行时也是一个重要的和可取的功能;这里描述的架构提出了一个高度可扩展的第一步,最终目标。确认我们要感谢Vivek Sarkar,Wim DePauw和Kaoutar El- Maghraoui对本研究的帮助和评论。这项工作也得到了两个IBM Eclipse创新奖的部分引用[1] G.啊哈Actor:分布式系统中的并发计算模型。麻省理工学院出版社,1986年。[2] B. Alpern,J.崔,T.Ngo,M.Sridharan和J.Vlissides。一个无干扰的重放平台,用于交叉优化的多线程应用程序。 在第15届国际并行和分布式处理研讨会(IPDPS'01)中,第23-23页,2001年4月。[3] L. Cardelli和A. D. 戈登移动环境。软件科学和计算结构的基础:第一次国际会议,FOSSACSSpringer-Verlag,柏林,德国,1998年。[4] M. P. P. Z. Hasan和A. O. 门德尔松 使用hy+可视化和查询分布式事件跟踪。In W. Litwin和T.Risch,编辑,数据库应用,第一次国际会议,ADB-94,Vadstena,瑞典,1994年6月21-23日,Proceedings,计算机科学讲义第819卷,第123Springer,1994年。[5] J. Field和C.瓦雷拉建立具有分布状态的可靠系统的规划模型。第一届协调语言和软件架构基础国际研讨会(FOCLASA)。捷克共和国布尔诺,2002年8月。[6] R.科努鲁湾Srinivasan和J. - D.崔分布式java应用程序的确定性重放。在第14届国际并行和分布式处理研讨会(IPDPS[7] R. 在这段时间里,你。 H?olzle,andA. K. Singh. 我是一个很有前途的人. LectureNotesinComputer Science,1628:135[8] R. 米尔纳的 多元的 π演算教程。在 F. L. 鲍尔, W. 布劳尔,以及H. Schwichtenberg,editors,Logic and Algebra of Specification,pages 203Springer-Verlag,1993.[9] W. D. Pauw,E. Jensen,N.米切尔,G。Sevitsky,J. Vlissides,and J. Yang.软件可视化,最先进的调查。LNCS 2269,2002年。[10] S. P. Reiss。 Jive:Visualizing Java in Action,Personal Communication. 在ICSE,2003年5月。[11] M. Se fika,A. Sane和R.坎贝尔面向架构的可视化。在Proc. ACMConf. on Object-OrientedProgramming Systems,Languages and Applications(OOPSLA),卷31:10,页389 -405,1996中。[12] G.塞维茨基D. Pauw和R.科努鲁一个用于java程序性能分析的信息探索工具。面向对象语言和系统技术(TOOLS Europe 2001),2001年3月。T. Desell等人理论计算机科学电子笔记107(2004)87101[13] R.草。监控复杂系统的关系方法。ACM Transactions of Computer Systems,6:2:157[14] C. Varela和G. 啊哈 一种并行活动协调的层次模型。在P.Ciancarini 和 A. Wolf , editors , Third International Conference on CoordinationLanguages and Models(COordination '99),LNCS 1594,pages 166-182,Berlin ,April 1999.施普林格出版社。http://osl.cs.uiuc.edu/Papers/Coordination99.ps网站。[15] C. Varela和G.啊哈 用SALSA对动态可重构开放系统进行编程。ACM SIGPLAN Notices,36(12):20[16] R. J. Walker,G. C.墨菲湾N. Freeman-Benson,D.赖特,D. Swanson和J. Isaak。通过高级模型可视化动态软件系统信息。面向对象编程,系统,语言和应用,第271-283页,1998年[17] P. Wojciechowski和P. Nomadic Pict:Language and Infrastructure Design for Mobile Agents. 在第一届国际研讨会上代理系统和应用(ASA
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功