没有合适的资源?快使用搜索试试~ 我知道了~
基于KETAL:明确定义复杂事件模式的分布式通信库设计和实现
可在www.sciencedirect.com在线获取理论计算机科学电子笔记281(2011)127-141www.elsevier.com/locate/entcs基于KETAL路易斯·丹尼尔·本看到了Navarro,还有BarreraKiyoshigeGarces,HugoArboledaDep artamentodeTecnolog'ıasdeInformaci'onyComunicacionesI2TGroup,Universidad IcesiCalle 18 No. 122-135 Pance,卡利,哥伦比亚daniel@rainconcept.com{andres.barrera| oscar.garces|hfarboleda}@icesi.edu.co摘要本文提出了一种基于事件的内核库,旨在明确地构建和协调复杂的交互和分布式应用程序中的通信模式。该库集成了明确定义复杂事件模式,检测分布式系统中的事件以及验证考虑因果排序的事件序列的设施。具体地说,我们提出了以下贡献:i)在分布式应用程序中发现的非平凡场景的分析,以制定一套基于事件的内核库的要求和限制,ii)支持复杂事件模式的检测和协调以及支持分布式事件的因果操作的库的设计和实现,iii)我们的方法的定性评估,显示如何使用这个库来构建一种复杂的分布式面向方面的语言。关键词:分布式事件模型,事件模式,因果关系,自动机。1介绍分布式系统由一组自治计算机组成,这些计算机被称为节点或主机,通过网络和分布式中间件连接,使节点能够协调它们的活动并共享系统的资源,因此用户将系统视为一个单一的集成计算设施[23]。分布式系统的实现是一项艰巨的任务,部分原因是当前的主流方法和工具没有提供明确定义、协调和实现分布式算法和通信模式的机制。相反,程序员被迫进行防御性设计,并创建孤立的,复杂的和不相交的软件组件,以隐式地控制分布式应用程序的行为和通信协议例如,考虑3层应用程序。在这样的应用中,通信被限制到连续的层,并且在大多数情况下,这样的限制意味着两个层之间的通信是不可能的。1571-0661 © 2011 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2011.11.030128L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127层是通过唯一的虚拟实体(即,仅模拟一台计算机)。这种防御性的设计限制大大简化了分布式应用程序的实现。然而,它仍然需要在至少两个组件之间编码分布式算法和通信模式:一个在开始通信的层中,另一个在接收通信的层中。为了解决当前分发工具和方法的局限性,已经提出了几种设计技术和架构风格,例如,请参见设计模式[9,1]和消息传递中间件上的集成模式[10]。然而,这些方法中的大多数都是最佳实践、习惯用法和推荐的使用场景的目录,这些方法处理当前工具的限制,并且没有改进工具的主要抽象。此外,最近的研究表明,这些最佳实践和模式的使用并没有改善最终代码的实际复杂性。 例如,Benavides等人在[6]中指出,用于在JEE应用服务器集群上复制动态会话信息的复杂通信模式的实现导致了理解和维护的混乱和分散的代码困难。即使很难,通信模式也有明确的定义,有很好的文档记录,并根据当前的最佳实践进行开发。最近的研究提出了新的工具和概念框架的发展,以支持表达和复杂的结构,以解决分布式编程[12,7,11,20,6]。这些工具中的大多数都提出了一个事件模型和几个构造来匹配和操作分布式事件流。这些工具需要坚实的构建块,以允许正确,可靠和高效地实现编译器,工具和运行时框架。本文提出了一个基于事件的内核库,旨在明确地构建和协调复杂的交互和分布式应用程序中的通信模式。具体而言,我们提出以下贡献:• 对分布式应用程序中的重要场景进行分析,以便为基于事件的内核库制定一组需求和限制• 该库的设计和实现解决了复杂事件模式的检测和协调,支持分布式事件的因果操纵。• 定性评估我们的方法,显示如何使用这个库来建立一个复杂的分布式面向方面的语言1。本文件的结构如下。首先,在第2节中,我们通过详细分析分布式应用程序上的非平凡场景来激励我们的工作。然后,我们将在第3节中介绍内核库的设计考虑。第4节,讨论了内核库的实现,以支持所提出的结构。第5节通过一个分布式面向方面语言的实现最后,第61这个项目是AWED语言重新实现的一部分L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127129推流回顾相关工作,第7节结束。2动机在本文中,我们认为一种机制,明确地构建和协调复杂的交互和通信模式的分布式应用程序。在本节中,我们将介绍三个重要的场景,展示在处理分布式应用程序上的分布式事件时会出现什么样的首先,我们提出了一个抽象的场景,一组事件之间的节点参与应用程序进行通信。然后,我们讨论了两个具体的情况下,典型的调试和测试任务的分布式中间件。2.1寻找事件模式假设我们部署了一个分布式系统来管理一个具有基本操作实现的复制堆栈。堆栈提供推送和弹出服务,此外,它还提供启动和停止协议来控制堆栈何时复制(打开和关闭服务)。节点A负责执行开和关操作,节点B负责执行推送操作,节点C负责执行弹出操作。根据定义的集成协议,分布式系统的行为必须如下:每当一个事件在一个节点中发生时,一个协调消息被传递给其他节点,以便通知刚刚发生的事件并协调复制的堆栈。图1展示了这种行为。第一个事件on发生在节点A中,因此堆栈开始。传递两个消息,通知节点B和节点C堆栈已打开。 在节点B和节点C检测到消息之后,第二个事件push发生在节点B中,因此堆栈具有其第一个插入元素。传递两条消息,通知节点A和节点C元素已添加到堆栈。在节点A和节点C检测到消息之后,第三个事件pop在节点C中发生,因此堆栈现在再次为空。传递两条消息,通知节点A和节点B从堆栈中删除了一个元素。最后,在节点A和节点B检测到消息之后,节点A中发生第四个事件off,因此堆栈被关闭。传递两个消息,通知节点B和节点C堆栈不再可用。节点B和节点C检测消息。节点A在节点B节点C关闭时间Fig. 1. 三个节点上的分布式堆栈示例。如果可用的系统事件不受堆栈当前状态的约束,那么这将是一个微不足道的场景但事实并非如此。可用操作130L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127推在堆栈中,受先前执行的操作的限制例如,堆栈只接受一个push,如果on已经被执行。然后,每个节点在收到请求后,必须在更改本地堆栈之前验证其当前状态。这意味着要检查分布式事件之间的关系通过使用当前技术,分布式事件之间的复杂关系必须根据个体主机的执行状态的条件来定义。因此,涉及多个主机的关系必须使用难以理解和维护的复杂且孤立的编码来2.1.1事件模式的排序问题:假阳性/阴性在上面的场景中,我们假设无论在一个节点,该事件被触发,每个剩余的节点立即被通知,目的是协调分布式系统。此行为假设协调消息的到达顺序具有确定性;第一个协调消息发送,第一个协调消息接收。在分布式系统中,呈现这种情况的确定性并不常见,分布式系统必须处理并发进程、数据传输中的随机延迟或网络服务的拒绝,图2给出了一个示例,其中说明了事件模式检测中的不确定性问题。在图中,第一个事件on发生在节点A中,并且两个集成消息被传递以通知节点B和节点C堆栈被打开。B检测消息。 然而,节点C在检测到消息之后检测到消息。 来自节点B的消息,用于通知发生了推送。由于事件的这种交织,节点C检测到的事件模式是push,on>,这与节点B检测到的事件模式不同。节点A在节点B节点C时间图二、 事件排序的不确定性示例在分布式系统中,事件模式通常只有在它们作为特定的和定义良好的执行轨迹的一部分发生时才有意义,而不是在这些轨迹的一部分的事件的不同交织的存在下,并且由于非确定性执行而发生。例如,在我们的示例中,节点C可能对事件模式push,push,push>感兴趣,目的是消费堆栈上的项目:pop,pop,pop>。此外,节点A可能对事件模式push,push,push,pop,pop,pop>感兴趣,目的是关闭堆栈o_push:off>。在存在事件交错的情况下,可能发生某些事件模式从未被识别或被错误地识别。我们将这些问题称为:• 误报检测:检测到错误的事件序列并将其映射到预定义的事件模式。L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127131推• 检测假阴性:未检测到映射到预定义事件模式的正确事件序列。图3说明了这两种情况。 让此序列从未发生;但是,节点C检测到该序列,这是一个误报。现在,让此序列确实会发生;但是,节点C不会检测到该序列,因为它检测到,这个缺失的模式就是我们所说的假阴性。节点A在节点B上节点C流行关闭时间图3.第三章。假阳性/阴性问题的图示目前,已经提出了几种方法来定义和验证分布式系统中事件的约束之间的关系。例如,并发程序的数据路径表达式[21],基于逻辑时钟的因果事件关系[2,8,15]和基于控制流的事件关系[16]。然而,这些建议的声明性声明尚未被集成到主流中间件中。因此,除了涉及多个主机的关系必须使用复杂和孤立的编码来表示之外,独立组件必须意识到捕获假阳性/阴性并处理它们。2.2具体示例:测试和验证分布式中间件当在软件应用程序的上下文中修复错误时,至少执行以下两个操作:首先,开发人员创建一个调试会话来重现和修复问题;然后,开发人员编写一个测试用例,以便在每次回归测试运行时重现错误,并因此保证它在[20]中,在存在多个线程访问同一缓存位置的情况下,JBoss Cache [13]在事务算法(两阶段提交协议)中出现死锁错误这些错误很难修复,因为上面描述的两个操作不容易实现。例如,对于调试会话,错误很难再现,因为产生死锁的事件的不正确交织被调度程序随机再现因此,在具有有限数量的线程和由调试器施加的大延迟的公共调试因此,由于当前的调试工具不提供抽象来简明地表达这种情况,程序员再次不得不手动编码集成信息以便推断分布式状态。这种策略意味着应用编程技巧,例如用状态信息污染原始通常,通过确保132L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127事件服从严格的排序约束。然而,目前的调试器不支持这样的设施和程序员不得不求助于分布式状态和协调信息的编码在为这种错误编写测试用例时,情况类似在测试涉及事件随机交错的错误时,一个常见的习惯用法是同时触发多个线程,以便随机重现错误例如,在JBoss Cache中,有一个测试用例使用了这样的习惯用法。具体来说,测试用例使用两个缓存,第一个缓存上的动作通过复制框架复制到第二个缓存中。测试用例触发多个线程中的多个工作线程。每个worker启动一个事务,将一个值放入缓存并提交事务。当工作者在两阶段提交协议的成功准备阶段之后提交事务并在本地提交之后但在完成与远程缓存的最终提交阶段之前释放对源缓存的锁定时,死锁发生。在那里,其他工作者可能会交错他们的事务操作,特别是在同一个缓存位置获取锁,从而阻止第一个事务终止其远程提交阶段,从而进入死锁状态,因为没有工作者可以获得所有必要的本地和远程锁了。为了重现死锁,测试用例必须运行多次。但是,经过几次测试后,死锁可能不会重现。这是因为当前技术不提供构造函数来编程和内聚地协调通信行为,诸如中间同步或异步调用的序列。然后,构造有效的测试用例,以确保系统地再现一些错误是一项繁琐而困难的任务。控制事件的顺序可以极大地改进确定性测试用例的创建。3设计考虑本节讨论我们在设计内核库时所做的主要考虑和假设。我们首先讨论事件模型,然后讨论如何使用基于有限状态自动机的模型来检测事件模式。最后,我们考虑一个动态模型的时间约束和几个使用场景的图书馆。3.1事件模型:检测基于事件的模式我们讨论的第一个设计考虑因素是所需的事件模型。基于上述动机,我们需要一个分布式事件模型。这样的模型必须精确区分消息和事件。事件是发生在特定进程上的单个节点上的原子操作。相反,消息是从单个节点上的特定进程发送到另一个节点上运行的其他进程的信息包。可能的动作的示例包括方法调用、发送消息和接收消息。请注意,事件的发生只能通过网络发送的消息通知其他节点L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127133还必须考虑到,事件是在一个背景下产生的。这样的上下文可以仅指静态信息,例如,事件发生时变量和参数的值,但它也可以指更复杂的动态信息,如控制流程历史(即,跟踪)。在我们的模型中,它要求上下文包含有关物理定位的信息,这意味着事件发生的节点。因此,当通过网络发送关于事件的信息时,必须附加关于定位的信息。最后,该模型必须公开一个完全分布式的架构,即没有集中式处理器或瓶颈,并且所有事件都通知给其他节点。在该模型中,参与应用的每个节点可以接收和发送关于事件发生的消息。该模型也是动态的,这意味着节点可以随时进入和离开分布式应用程序。因此,没有任何中央服务器或代理管理通知。为了设计内核库,我们考虑将任何节点上发生的所有事件请注意,最后一个限制只是为了帮助我们进行设计,利用应该分发的事件的负担。 在我们的例子中,我们认为所有的事件都是分布的。之后,读者将看到,这个限制并没有明确地让库工作,并且在具体的应用程序中(参见第5节的方面语言实现),事件的智能选择使得分布式事件的数量非常低。有了事件模型,我们可以开始讨论事件模式。事件模式的简单情况是原子事件,这样的事件现在可以在任何节点上检测到,并且可以从其上下文提取信息,包括本地化。这种情况可以扩展到检测事件序列因此,节点可以监听,例如,,对于host1上的事件序列(检测对hots编号1上的方法 A方法B的热点2)。然而,这些模式都很简单,我们对更复杂的模式感兴趣,下一节将介绍一个要处理的模型更复杂的事件模式。3.2的图案模型在上一节中,我们介绍了一个模型的设计注意事项,在这个模型中,可以在参与分布式应用程序的任何节点上检测到原子事件。现在,为了检测复杂的模式,我们建议使用基于有限状态自动机的模型。该模型将考虑在每个节点上,对特定事件模式感兴趣,将部署自动机。自动机将消耗事件通知来触发转换。图4中的示例显示了一个用于复制堆栈的复制协议,类似于第2节中的复制协议。在这个例子中,每个节点上都部署了一个简单的堆栈和一个监控自动机。自动机负责复制远程节点上发生的事件。图中的自动机将检测本地机器上的事件启动和停止(本地机器是相对的指定在每个自动机的部署机器上进行预测),这些134L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127t1:startCachet2:放置t3:stopCache图四、用于复制堆栈的简单复制协议事件将分别触发转换T1和T3,开始和停止复制。转换t2将由远程事件push或pop触发。请注意,我们没有显式地将行为绑定到transitions,但是我们可以这样做,例如通过绑定必要的代码来在本地堆栈上复制检测到的push和pop远程事件。上面的例子显示了我们在模型上做的主要假设,以处理事件模式:• 自动机实例部署在参与应用程序的每个节点上。• 自动机将消耗事件来触发转换。这些事件可以是远程事件。• 一个动作可以绑定到特定的转换。• 绑定到转换的操作在本地机器上执行。• 为了消费事件,自动机可以在事件本地化(在其发生的地方)上进行断言这些谓词可以引用相对本地化,如localhost或not localhost到目前为止,我们还没有在模型中考虑时间和排序问题。下一节将明确阐述这些考虑因素。3.3动态模型:分布式事件的排序我们已经提出了一个模型的设计考虑,其中原子事件,或事件模式,可以检测到参与分布式appli-阳离子的任何节点。该模型依赖于一个隐含的假设,即事件的消费顺序与它们的产生顺序相同。然而,正如我们之前提到的,事件通知是通过网络发送的消息完成的,网络不是一个可靠的资源:引入了一些延迟,而不是确定性此外,为了保证性能和可靠性,在大多数协议中不允许消息的顺序。已经提出了几种算法和解决方案来解决这个问题。第一种方法是在每个节点上同步时钟并强制消息排序。然而,这种方法已经被证明是非常昂贵的和复杂的实施和维护。 依赖于偏序的其他方法,例如,逻辑时钟[15]和矢量时钟[18]提出了一种更轻量级的解决方案,其中一些特定的排序情况无法确定。但是,目前,最流行的解决方案是分布式应用程序是防御性设计的,因此它们在算法中不假设消息顺序因此,库必须支持前面部分中所述的模型,12L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127135它必须支持排序算法这种算法在处理复杂事件模式时非常有用;例如。,涉及分布式测试用例和复杂断点的那些,如[20]所研究的,并在第2节中介绍。在这项研究中,我们将支持事件的因果排序,如动机部分所述。这些算法将基于Mattern的向量时钟[ 18 ]。根据这些考虑,该模型应扩展如下:• 自动机上的转换应该支持守卫。保护是在自动机上执行转换之前评估• 库应该支持因果和并发守卫。因此,只有当事件遵守这些条件时,它们才会被消费,而这些条件是关于因果关系定义的偏序的(因果关系• 最后,模型必须支持特殊的构造来授予事件排序。因此,因果关系不仅将被评估,但它也将被授予,通过自动机消费前的消息重新排序。3.4具体的内核使用场景我们现在讨论内核库的四个具体使用场景这些场景是从程序员的角度创建的。第一个场景是通过正则表达式创建因此,程序员可以使用例如表达式aabc+ aB来定义自动机。第二种情况是指消费事件的完整单词。根据我们到目前为止介绍的设计考虑,我们的自动机消耗事件而不是字符。为了完成第一个场景,我们必须包括一个新的设计考虑,包括事件到角色的映射。因此,为了消费事件,库必须接受在有序数据结构(例如向量)内传递的事件的字,并将其映射到字符的有序数据结构。第三个场景涉及到事件模式对自动机的验证。一旦收到一个词,库必须回答这个词是否与自动机匹配。最后,第四个场景与显式创建au- tomata有关。这个库必须允许程序员通过提供一个事件字母表、一个初始状态、一组状态、一组转换和一组最终状态来创建自动机。在这种情况下,事件的消费可以原子地完成,一次一个事件。在这种情况下,自动机可以回答自动机的当前状态。4执行在本节中,我们将描述基于事件的内核库的主要组件。我们首先介绍架构,它的元素,以及这些元素如何实现上一节中描述的模型。然后,我们详细展示了我们如何建立自动机框架,以支持分布式事件模式的检测和管理。库代码可以在[17]中找到136L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127基于事件的内核库自动机层抽象事件框架消耗自动机外观使用自动化引擎使用扩展协议栈与其他节点UDP平MERGE2GMsCAUSALPROTJ集团的扩展条款图五、基于事件的内核库的体系结构4.1架构图5展示了内核库体系结构的四个主要组件:抽象事件框架, 的 自动机门面,的 自动机发动机, 和分布层。抽象事件框架基本上是一组接口,允许开发人员(库的用户)修改现有代码,以便将其建模为可由以下定义的自动机使用的事件: 图书馆Automata Facade提供了直接操作自动机的定义和执行的抽象(详见下一节)。自动机引擎负责根据自动机理论处理自动机上的动作。目前,我们使用Anders Møller等人提供的自动机库作为自动机引擎。请注意,此组件可能会更改为其他组件,而不会删除库提供的接口和服务分发层提供主要的抽象来分发事件消息和监听其他节点发送的事件消息。该层提供基于组通信的分布式架构(即没有集中式组件)(参见JGroups [14])。分布式应用程序上的每个节点都必须有一个已部署的内核库实例为了处理消息的因果关系谓词和因果顺序,我们开发了两个可在JGroups协议栈上配置的协议(参见图5,JGroups扩展组件)。默认情况下,JGroups提供了几种协议实现,包括GMS、MERGE2、PING和UDP。所开发的协议在图中以标有CAUSALPROT的框的形式描述。第一个协议将因果信息添加到事件消息中,因此接收方节点可以确定消息是否以因果顺序到达,如果它们是并发的。该方案避免了假阳性;例如,如果两个消息被颠倒,则协议将检测到第二个消息的顺序不正确,并且它将不会被消费。第二个协议也将因果信息添加到事件消息中,但是,在将消息传递到自动机层之前,它根据因果偏序对消息进行排序。因此,该协议禁止假阳性并避免假阴性。L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127137自动机11dk.brics.automaton1dk.brics.automaton.Automaton1状态110..*dk.brics.automaton.State0..*过渡11dk.brics.automaton.Transition<<界面>>1事件1接口>>1表达式1<<实现>><<实现>><<联系方式>>一元<<联系方式>>二进制和<<实现>>或<<实现>><<实现>>NotExpression默认值表达式钙离子的表达见图6。Automata Facade组件的类图及其与Automata Engine组件上的类的关系。4.2自动机层图6显示了我们在AutomataFacade和AutomataEngine组件中实现的主要类。类Automaton、State和Transition表示AutomataFacade组件中自动机的主要抽象。Facade 提供了一组服务, 允许程序员使用自动机来消费分布式事件。Automaton包中的类是来自AutomataEngine的类(请参见Møller et al.自动机库[19])。 转换可以附加到事件上的表达式(参见表达式和事件之间的接口).当转换附加到表达式时,库的用户决定如何使用事件以及何时进行转换。原则上,即使事件不能直接附加到转换,库也提供了模拟这种关系的方法 当事件被附加到转换时,会发生的是在后台创建了一个DefaultExpressionsExpression。 这样的表达式将到达的事件与定义的事件进行比较,这是一种模仿作为转换的事件消费的行为。可以向转换添加表达式,这为守卫提供了直接支持。为了建立一个复杂的守卫表达式,程序可以使用Not,And,Or结构。为此,该库提供了一个表达式结构的层次结构,包括一元Not表达式和二进制表达式And和or。但是,为了灵活性,用户可以根据需要创建自己的表达式库。5评估:设计一个具有复杂切入点的我们已经使用我们的内核库在一个复杂的面向方面语言上构建了对复杂切入点的支持,并显式支持分发(AWED [5,20])。在本节中,我们简要描述了AWED的主要概念,并对如何使用该库来实现这些概念进行了定性评估。138L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127AWED提出了三个主要概念:方面,分布式切入点和分布式建议。方面是类的构造,用于定义横切关注点。这些方面包含切入点定义和建议。分布式切入点是声明性构造,用于在分布式程序的执行跟踪上匹配特定事件。AWED提出了一种对事件本地化敏感的切入点语言。例如,AWED不仅提供切入点来匹配方法调用、方法执行、变量更新等事件,还提供切入点来匹配特定主机或主机组上发生的事件。Advice是绑定到切入点的类似方法的构造,一旦特定的切入点匹配事件,就会执行Advice。AWED提出的切入点集包括事件序列的构造(类似于我们的自动机)和一个复杂的同步模型。同步模型包括同步匹配语义,其中一旦事件被匹配,则暂停基本程序(生成事件的程序),直到通知完成其执行。该语言还提供了异步语义,其中建议和基础程序并发执行。两种语义都可以以分布式方式执行。因此,例如,基本程序可以在一台机器中暂停,而相应的建议在另一台机器中执行。该模型由一组结构完成,允许程序员构建切入点谓词,包括因果关系和并发关系。为了实现上面描述的结构,我们首先修改了切入点实现,以便使用事件框架。然后,我们修改了AWED为了解决因果谓词,我们使用自动机层提供的结构将因果和Conc(并发)修饰符映射到表达式中。实现最复杂的要求是同步模型。为了实现这样的模型,我们创建了一个机制,智能编织。这样的过程首先寻找切入点定义,并在代码中识别可能生成可检测事件的特定点。 在这些点上,织入器将粘合代码添加到广播事件,并根据所选的同步模式,暂停或并发执行基本程序。当并发执行基本程序时,扩展模型以提供类似于将来的同步语义。6相关工作为了选择一个自动机引擎组件,我们研究了几个库和应用程序,其目标是使用自动机和正则表达式的情况建模。在本节中,作为一个代表性的作品,我们介绍了其中的四个。我们还讨论了当前的分布式基于事件的模型。安德斯·默勒该库允许开发人员使用正则表达式操作定义有限状态自动机。有两种方法可以在这样的库中创建自动机:i)L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127139通过使用描述语言的正则表达式,ii)通过显式定义它;也就是说,我们必须创建状态和它们之间的转换集。 该库在其他工具之间提供了确定给定单词或字符串是否是某个特定语言的成员、自动机是否是确定性的或所识别的语言是否是有限的功能。JFlap [22]是一个提供创建确定性或非确定性自动机的工具的包。它还包括管理堆栈、摩尔机、图灵机和正则表达式的功能它最显着的特点是它的用户界面和它的设施,形式语言和自动机理论学习。Jakarta RegExp [24]是一个专门用于创建和操作正则表达式以定义特定领域语言的库。该库不包括状态和转换的概念;因此,确定接收到的字符串是否是语言成员的唯一方法是逐个消费字符,并递归地在语言上下文中建立字符串成员关系。JAuto [4]是一个在Java平台中提供有限状态自动机操作工具的它的API包括创建自动机,将它们转换为外部源,测试自动机之间的各种关系,以及评估自动机上的一元和二元谓词的功能在[3]中,Bailly et al.提供了一个分布式组件模型这项工作使用JAuto作为组件组合的手段,以保持行为合同。如上所述,这四个库是实现自动机和正则表达式理论的工具的代表性示例。然而,他们都没有 此外,由于没有包含状态的概念,RegExp无法控制事件消费的过渡,这是我们在第3节中讨论的设计考虑的一部分。关于复合事件检测,已经提出了几种方法,例如参见[7,12,11]。这些方法提供了在一组事件上创建谓词的方法。原则上,这些谓词定义了由我们的模式模型定义的集合的子集。例如,它们可以检测事件序列,但它们不完全支持事件跟踪上的正则表达式。与我们的建议进行比较的另一点是同步模型。大多数基于事件的方法使用异步交互,相比之下,我们的模型不施加这样的限制,如评估部分所示,允许库也用于具有同步交互模型的应用程序7结论在本文中,我们认为,在分布式应用程序中显式地构建和协调复杂的交互和通信模式的机制。我们已经提出了一个分布式应用程序中发现的非平凡场景的分析,我们制定了一套基于事件的内核库的要求和限制,我们设计并实现了内核库,它支持检测和协调复杂的事件模式,考虑到因果操纵。140L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127分布式事件,我们评估了我们的方法。我们在内核库构造器中包含了分布式应用程序的协调,而不是将协调委托给不相交的组件;为此,库的架构基于实现基本自动机操作的自动机库。我们的评估表明,我们的li-technology可以用来建立或改善一个复杂的分布式面向方面的语言,如AWED。我们的工作为未来两个主要领域的工作奠定了基础,模型和应用。对于模型扩展,我们将探索更复杂的模式和概念,例如,下推转换,下推自动机。在应用方面,我们将研究Java的完全分布式调试器的实现,以及动态图形建模工具的开发,以生成软件工件。引用[1] D.B.,D. Malks和J.Crupi,[2] 安德森,J.H.,Lamport on mutual exclusion:27 years of planting seeds,in:PODC三比十二[3] Bailly,A.,M.克莱布和我。Simplot-Ryl,Component composition preserving behavior contracts basedon communication traces,in:Implementation and Application of Automata,LNCS3845,SpringerBerlin/Heidelberg,2006 pp.54比65[4] Bailly,Arnaud and Roos,Yves,JAutomata主页,最近一次访问2011年 5月(2011).URLhttp://jautomata.sourceforge.net/[5] 本阿维德斯纳瓦罗湖D. 和M. ShUdholt,一个WED主页,2011年5月的最新照片。URLhttp://awed.gforge.inria.fr/[6] 本阿维德斯纳瓦罗湖D、M. 苏德霍尔特河 Douence和J. - M. Menaud,分布式程序的入侵式方法,在:Proc. of the 9th International Symposium on Distributed Objects , Middleware , and Applications(DOA'07),LNCS(2007)。[7] Eugster,P.和K. Jayaram,Eventjava:An extension of java for event correlation,in:ECOOP570-594.[8] Fowler , J. 和 W. Zwaenepoel , Causal distributed breakpoints , in : Proceedings of the 10thInternational Conference on Distributed Computing Systems(ICDCS)(1990),pp. 134-141.[9] 伽马,E.,R.赫尔姆河Johnson和J. Vlissides,[10] 霍佩湾和B. Woolf,Inc. 美国马萨诸塞州波士顿,2003年。[11] Itzstein,G. S. V和D. A. Kearney,The expression of common concurrency patterns in join java,in:Proceedings of the International Conference on Parallel and Distributed Processing Techniques andApplications,Volume 2,Las Vegas,Nevada,USA,2004,pp.1021号[12] Jayaram , K.和 P.Eugster, Scalable Efficient Composite Event Detection,in :D. Clarke 和 G. Agha ,editors , 12th International Conference on Coordination Models and Languages ( COordination2010),LNCS6116,Amsterdam,The Netherlands,2010,pp.168-182.[13] JBoss Cache主页,最近一次访问是在2011年5月(2011年)。URLhttp://labs.jboss.com/jbosscache[14] Jgroups主页,最近一次访问是在2011年5月(2011年)。网址http://www.jgroups.org/L.D. Benavides Navarro等人理论计算机科学电子笔记281(2011)127141[15] 兰波特湖, 分布式系统中的时间、时钟和事件排序,Commun。 ACM21(1978),pp. 558-565[16] 李杰,通过全局因果关系捕获对基于组件的系统进行监控和表征,适用于:第23届国际Conf. 分布式计算系统(2003)。[17] LuisDanielBen avidesN avarro , And r′es Barrera , Ki yoshigeGar c′es , HugoAr boleda , Ketal-kern el ev en t- based au to mata lib rary hom e page , latest visit on May 2011 ( 2011 ) .URLhttp://www.icesi.edu.co/driso/ketal.php[18] Mattern,F.,分布式系统的虚拟时间和全局状态,在:并行和分布式算法国际研讨会论文集,Chateau deBonas,法国,1988年。[19] Møller,A.,dk.brics.automaton -网址http://www.brics.dk/automaton/[20] 纳瓦罗湖D. B、R.Douence和M.Sudholt,使用基于对等的控制流和因果模式来测试中间件,见:第九届ACM/IFIP/USENIX中间件国际会议论文集,中间件'08(2008),pp. 183-202.[21] 波南吉湾K.,W. Hseush和G. E. Kaiser,使用MPD开发多线程程序,IEEE Software6(1991),pp. 37比43[22] 罗杰,S.,JFLAP主页,最近一次访问于2011年5月(2011年)。URLhttp://www.cs.duke.edu/csed/jflap/[23] Tanenbaum,A. S.和M. V. Steen,美国新泽西州上鞍河,2006年。[24] Apache软件基金会,Jakarta RegExp主页,最近一次访问于2011年5月(2011)。网址http://jakarta.apache.org/regexp/index.html
下载后可阅读完整内容,剩余1页未读,立即下载
![.pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 电力电子系统建模与控制入门
- SQL数据库基础入门:发展历程与关键概念
- DC/DC变换器动态建模与控制方法解析
- 市***专有云IaaS服务:云主机与数据库解决方案
- 紫鸟数据魔方:跨境电商选品神器,助力爆款打造
- 电力电子技术:DC-DC变换器动态模型与控制
- 视觉与实用并重:跨境电商产品开发的六重价值策略
- VB.NET三层架构下的数据库应用程序开发
- 跨境电商产品开发:关键词策略与用户痛点挖掘
- VC-MFC数据库编程技巧与实现
- 亚马逊新品开发策略:选品与市场研究
- 数据库基础知识:从数据到Visual FoxPro应用
- 计算机专业实习经验与项目总结
- Sparkle家族轻量级加密与哈希:提升IoT设备数据安全性
- SQL数据库期末考试精选题与答案解析
- H3C规模数据融合:技术探讨与应用案例解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)