没有合适的资源?快使用搜索试试~ 我知道了~
b5理论计算机科学电子笔记154(2006)25-41www.elsevier.com/locate/entcs协调作为一个建筑方面卡洛斯·E。成本A、1、3、4M. 皮拉尔·罗梅,巴勃罗·德拉富恩特3ManuBarrio-Sol'orzan或7,2,3AD ep to。 在formatica中(Arquitectura,C. Computacion,Linguajes)EscuelaT'ecnicaSuperiordeIngenieraInformatica巴利亚多利德大学47011巴利亚多利德,西班牙b从p到rtamentodeSistemasInformaticosEscuelaPolitecnic aSuperior马德里欧洲大学28670Vilaviciosad eOdn,Madrid,Spain摘要式模块化是关注点分离原则的一个传统结果,该原则指出,不同的抽象概念应该在不同的实体中进行处理。这些实体之间的交互定义了组合结构,这是软件体系结构所研究的。最近的研究重新审视了最初的原则,提出了一种不同的模块化策略。 与经典组件一样,这种方法明确考虑了额外的关注,即定义了跨越传统障碍的模块。"[10]最著名的例子是Aspect Orientation。该策略定义了一种新颖的交互和组合结构,这对软件体系结构特别感兴趣。此外,这些交叉问题中的一些最好在体系结构级别进行了描述。协调是这样一个体系结构方面的一个明显的例子:一个高阶交互抽象,它可以将其影响扩展到整个系统。在本文中,我们提出了一种将这些概念整合到现有语言中的方法,使用叠加的概念作为基础。所选的目标是PiLar,一个反射性的、代数过程ADL。 体系结构片段或V形的概念被引入作为一个体系结构级别的方面。为了展示这些想法的可应用性,我们描述了一个案例研究,包括编织一个协调的体系结构方面,封装Paxos分布式共识算法,和一个简单的流水线式体系结构,并获得初始系统的协调版本。关键词:软件体系结构,协调,方面定向,叠加,Paxos算法。1571-0661 © 2006 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2005.12.03126C.E. Cuesta等人理论计算机科学电子笔记154(2006)251介绍性惠勒尽管存在激烈的争论,但间接性无疑是为系统设计增加灵活性的最重要手段之一此外,Dijkstra的《这是软件工程中许多抽象的核心,也与以前的原则有关:每一次,一个新的关注点都被封装在一个单独的模块化元素中,一种新的间接出现;曾经是主要抽象不可分割的一部分的东西现在是它必须引用的东西,有时甚至使用名称。软件体系结构学科在过去十年中的兴起是对这两个原则的辩护。这个概念的主要目的是分离结构上的关注、组成和相互作用。体系结构的组件是从解决其自身依赖性的需要中释放出来的;它们是在体系结构描述级别上处理的因此,建筑层面仍然是间接性的另一个例子:那些总是隐含的关注现在被明确地管理和去脚本化了。其中一个问题是相互作用,它本身恰好是间接原则的一个结果因为现在有不同的模块,它们必须相互引用,并且它们之间存在交互作用。体系结构要求明确地考虑交互,并为此目的提供了特定的通知。这可能只是意味着组件之间的绑定或连接,但后来它衍生出了连接器的第一类概念,这可能是软件体系结构中最成功的抽象。但是一旦互动被确定为一个关注点并被模块化,间接性就必须再次出现。有时,交互必须遵循主计划,或者由非本地条件控制。连接器必须引用其他连接器,甚至与另一个连接器交互。现在出现了更高层次的交互抽象。1本作者由西班牙教育和科学部在项目MCYT-TIC 2003 -07804-C 05 -01(DYNAMICA-PRISMA)下提供部分资金。2这些作者由西班牙教育和科学部在MCYT-TIC 2003 -09268项目下特别资助。[3]这些作者部分由自治区教育大臣资助,G overnmentofCastillayLonunderpr ojectJC YL-VA117/03。4电子邮件地址:cecuesta@infor.uva.es5Email:pilar.romay@gma il. com6 电子邮件地址:pfuente@infor.uva.es7 电子邮件地址:mbarrio@infor.uva.esC.E. Cuesta等人理论计算机科学电子笔记154(2006)2527表达一种更高阶交互的抽象形式是协调(coordination)。它描述了当明显自主的交互实际上依赖于彼此时会发生什么。[10]例如,一个传输必须等待另一个传输完成,或者一组传输必须同时发生。1.1作为建筑关注点的协调模型和体系结构描述语言(ADLs)之间存在着明显的相似性,特别是在涉及动态体系结构的情况下。许多语言,无论是来自一个起源还是来自另一个起源,都在不同的背景下扮演着这两个角色。这有一个几乎显而易见的原因:协调是一个架构层面的问题。首先,正如已经讨论过的,协调是比交互更高阶的抽象。第二,交互是软件架构的基本维度之一,事实上也是该领域对明确交互所做的最重要贡献之一。现在,架构连接是发生交互的地方,连接器是它们的模块化单元。因此,任何捕捉协调的方法都必然是在体系结构连接之上进行抽象的;而这正是DL所设计的那种通知,因为它们与协调语言有着相似之处。传统上,关注点的分离主要得到了两个基本答案:经典模块化和分层体系结构;它们都是组成模型。但最近的研究表明,对同样的原则有一个不同的、更灵活的应用。有一些问题,通常是非功能性的,它们是明确标识的,可以独立封装,但不能作为一个传统的组件来封装。这些关注点跨越了体系结构的大部分,因此它们可以同时分解许多模块,因为它们的行为很容易与这些模块的功能性相混淆。[10][11]方面取向(Aspect-orientation),一个在这里有一般含义的术语,被认为是原则的最后表述,是模块化的一个演变概念我们在软件体系结构中引入了面向方面[5],作为Andrews [1]原始建议的扩展,指出连接点可以被认为是进程中并发进程之间的同步化。但安德鲁斯的建议Andrews暗示同步化过程是在系统项部署之前完成的,所以它只是一个编译时的过程。相反,我们的扩展是一个运行时变量,完全动态。我们将架构方面设想为类似于并发进程,能够独立运行,并在连接点处进行同步处理。系统以非确定性方式演化,如28C.E. Cuesta等人理论计算机科学电子笔记154(2006)25pect可以动态地添加或删除,并且连接点的检测变化取决于该变化的上下文。因此,配位和编织是相关的;事实上,它们几乎是同素异形体。首先,我们对相互交叉的不同关注点有了独立的描述,编织过程必须确保它们的一致性。[10]其次,我们对与彼此交互的并发进程有独立的定义,同步进程必须确保它们之间的协调性,这是一个复杂的过程。这意味着编织过程本身就是一种协调活动,因此,方面取向也可以被看作是一种协调模式。由于强调的一些缺点,这两种活动的本质实际上是相同的。事实上,已经有一些建议可以用协调的术语来描述方面取向(我们的方法是相反的;方面是用来引入协调到一个架构。本文的目的是描述如何在体系结构级别上将协调描述为一个单独的更高层次的它分为两个基本目标,即:(a)任何一种协调都可以通过相互作用来实现,即架构连接;(b)任何一种全球协调战略,本质上是外部的和外生的,都可以被封装为架构方面,并编织成连接器,从而获得内部的、内生的性质;架构就像一个具有涌现协调的系统。2P.I.L.A.:一种动态反思性ADL在下一节中,我们将通过协调域中的一个例子来阐述上述离题的论点。将在体系结构级别描述示例系统,并将使用反射性技术和方面性技术来介绍所涉及的协调问题。为了能够做到这一点,我们选择了使用语言PiLar,一个具有动态和方面能力的反射性DL这种语言被设计成一种代数过程,但其初衷是灵活的,足以描述任何一种结构上的命名差异。此操作需要一个统一的通知,并且此通知已重新发布。[14]第14话。 P.I.L.A.被认为是一个反映D.L.的词,而且确实如此。它被证明是非常灵活的,而且它并不局限于命名的描述。它已经被用来研究具有不同性质的问题,例如面向方面的系统的结构,这是一个很好的例子。顺便说一句,PiLar的一个特定方面的语法的兴趣已经变得明显了。自最初构思以来,已经制作了几次这样的演示文稿[3,4]。除了一些次要的细节,语法已经保持了稳定性。"C.E. Cuesta等人理论计算机科学电子笔记154(2006)2529然而,后来增加的对面向方面的通知的支持可以被认为是迄今为止对该语言最重要的修订,因为它已经引入了几个扩展,尽管有几个修改。我们称这种语言的新版本为PiLar1。2.PiLar中的体系结构描述通常被构造为一组组件类型(archtype)和实例。实例相互连接,组成配置,这些配置反过来又组成了组成部分;因此,它们创建了原型组成部分层次结构,这些组成部分层次结构也以同样的方式以许多其他组成部分的形式结束。行为是由约束的方式来指定的,用类似于过程代数的语法来描述,特别是在Ccs中受到启发。这种语言是折衷的,但确实是一个公平的标准过程-代数ADL。描述动态性的潜力,以及语言的所有表达能力,都来自于反射性的支持。然后,可以添加或删除组件和连接;不仅可以更改结构,甚至可以更改行为。[10]类型层次结构本身是可以改变的;每个实体都可以被重新定义,并且它的含义也可以被修改。PiLar甚至没有合成这些元级连接器起着连接器的作用,但它们的本质不是合成的,而是语义的。虽然关键字connector是最近添加到该语言中的,但它实际上定义了一个组件类型;其意图只是提供一些提示,以指示此archtype将用于具体化连接。2.1建筑方面在PiLar在关注的高级分离的不对称模型中,一个方面是一个实体,它不是作为一个系统的一个组成部分来设计的,而是作为它的一个附加或扩展,重叠了它的基本模块结构。我们对体系结构方面的概念被认为是组件的反面:一个可分离的计算实体,它被专门设计来完成一个系统,而不是独立工作;它是通过外部编织的方式引入这个系统的,而不是使用一个明确的接口来组成的。这种类型的模块也被认为是处理一个特定的关注,虽然这不是真正的强制性。在体系结构级别,诸如aspect或concern之类的术语可能是不正确的。因此,将使用一个不同的名称来指代这个不对称方面的实体。由于它被认为是添加补充细节,它可以被理解为一个建筑的"装饰"。然后,这种元素将被命名为chevron。顺便说一句,一个V形纹章将被定义为一个品种。30C.E. Cuesta等人理论计算机科学电子笔记154(2006)25组件,意味着它可以有一个接口。换句话说,它并不一定会失去它在《自然》一书中,V形纹章与建筑之间的关系是用叠加的理论概念来定义的。在下一节中,我们将讨论这个概念的结构含义,以及我们在ADL中使用它的方式。2.2作为Katzian Superimposition的方面叠加的概念(又名"叠加")重叠)最早是在并发理论[2,8]的背景下提出的,在那里它最初被认为是一个扩展或细化的概念,被表达为两个进程或并发实体之间的特权关系它已经获得了比以往任何时候都更大的重要性,甚至在一些软件开发方法中成为中心思想的程度它最近被认为是一个合适的正式基础的方面定向[15,7,9],这是仍然在讨论。重叠的定义有几个不同的定义;虽然它们并不完全等同,但它们描述的是非常相似的概念。从架构的角度来看,它们之间最有趣的是Shmuel Katz [8]的一个建议,该建议通过将关系改写为一个并发控制结构来间接描述关系。因此,可以在体系结构级别一致地考虑这个定义。从这个观点来看,在任何叠加关系中都有两个角色:一个是被叠加在其他人身上的实体的角色,另一个是在叠加之下的其他人的角色。它们一起组成了一个并发结构,该结构被称为组合结构。趋势语义学大致如下:一个叠加的过程定义或扩展了一个叠加的过程。[10]这意味着前者能够接受和抑制与后者的任何外部相互作用,也能够观察到后者的内部状态;但在同一时间,前者也无法改变这些状态[2,8]。在下面,我们将使用基于前缀的表示法,以便每个元素在每个句子中都是明确标识的。因此,σ-成分是一个叠加在另一个成分上的成分,然后描述它的行为;而这个第二个叠加成分是一个β-成分,从第一个成分的观点这些前缀的使用可以扩展到覆盖其他概念,包括第二类元素,例如,第二类元素。因此,由Katzian叠加定义的结构可以被认为是一个由多个σ成分聚集而成的复合成分,它定义了一个全局行为。我们可以在此行为中识别多个角色;它们采用子进程的形式,子进程的名称为角色类型。严重C.E. Cuesta等人理论计算机科学电子笔记154(2006)2531σ-实体可以扮演相同的角色;另一种说法是,一个角色类型可以有几个实例。这个概念在体系结构层面上也是相关的,但为了避免混淆,我们在术语角色组件下引用它。简而言之,Katzian叠加定义了一个复杂的结构,即组合,它将位于两个不同层的组件连接在一起。上层类似于复合组件,是一种聚集元素的配置,这些元素既有传统的原型,也有角色组件。一个角色成分的每一个实例都是一个σ成分,它叠加在其他一些实例上,或者说是β成分。因此,最底层被定义为这些β-组分的集合。然而,这样的分层结构不是严格地组成的,因为组成元素之间的关系不是基于约定的相互作用的。在PiLar中,方面支持是基于叠加的,它直接受到了Katz构造的启发。具体地说,有一个语法可以将结构改写为体系结构片段只是一个由相关组件和多个占位符组成的配置,这些占位符本身就是角色组件。当这一个叠加在其他一些配置上时,这些占位符填充有σ-组件,这创建了到β -组件的碎片之所以被称为碎片,是因为它是一个部分的archi-tecture,只有当与另一个碎片复合时才是完整的。简而言之,这是PiLar对V形纹章的3体系结构级协调在本节中,我们将解释将在文档其余部分使用的示例,即Paxos分布式共识算法。在这里,它被描述为一个体系结构,定义了它的角色和行为,并被设想为一个独立的规范,封装了协调问题。我们的目的是在一些基础上引入这种结构,不协调的架构,把它变成一个协调的架构。这将证明,关注点的分离在架构中是将使用面向方面的概念将协调模块引入到基本基片中。我们以前的工作为同一个例子提供了一个反映性的版本[5];这是我们对软件体系结构中相关特定组件的单独描述的第一种方法。它能够在一定程度上实现关注的分离,就像协调一样32C.E. Cuesta等人理论计算机科学电子笔记154(2006)25"pect然而,有许多理由来改进方面的支持,并避免这样一个明确的使用反射性的想法。在这里,我们的目的是以卡茨叠加法的精神,将协调问题描述为封装Paxos算法的一个架构片段。这个片段将被叠加在基础架构上,使用方面的技术,然后避免需要诉诸于反射的使用。[10][11]为了突出这种新方法的趣味性,本示例使用了一种不同的策略来将关注点引入体系结构。在[5]中使用的集中式结构的前面,这里我们将使用一个分布式模式,在第4节中描述。3.1Paxos架构Paxos算法最早由Leslie Lamport提出[11,12]。 这是一个用于分布式系统的共识算法,它描述了几个远程对等体如何能够通过交换消息来就特定值达成协议,即使这些消息中的一些可能会丢失--也就是说,当通信信道不可靠时因此,它既是一种协调算法,即参与者通过在同一时刻选择相同的值来进行协调;也是一种容错算法,即即使在存在非拜占庭通信故障的情况下也能够进化的算法。兰波特用一个隐喻来描述这个算法:分布式系统是一个想象中的古希腊岛屿Paxos的议会这个会议中的立法者类似于分布式进程,算法中的参与者;他们的活动描述了用于就一个提案达成共识的协议,因此大多数人决定接受它。关键是,这些只是兼职立法者:他们可以自由地离开或进入会议。这意味着参与者可以在没有完成协议的情况下离开协议,或者在讨论过程中加入图1提供了Paxos架构,这是Paxos算法的架构描述,其中每个角色都表示为组件类型。在Paxos架构中有三个角色,即提议者、接受者和学习者。一个提议者是一个行动者,他向会议提出一个要被接受的价值观;一个接受者决定接受或拒绝这些提议;最后,一个学习者必须学习,如果这些接受者中的大多数已经达成共识。为了使这篇论文自成一体,在这一节中,我们将详细描述Paxos算法的步骤,以便图1中描述的行为得到充分理解,即使读者不熟悉过程代数符号,这也是我们在PiLar中使用的符号。Paxos共识算法分为两个阶段:第一阶段。第一阶段是-C.E. Cuesta等人理论计算机科学电子笔记154(2006)2533组件建议器()接口(端口准备)|端口接受)行为(\)REP(new(number,value:Int); number! (0)和价值! (0)τ(命题n);Paxos第一阶段Loopset(绑定)(准备!(建议n));Paxos第二阶段准备好了吗?(承诺n,最后n,最后v);如果(承诺的n =建议的n)//以数量最多的响应的值为例号码?(n)如果(n≥最后n)(数字! (n))Else(值?(v)和价值! (last(五)数量! (last n))if(MJORITY(promised n))(值?(val)如果(val=0)(tau(val));//最后,请求接受此建议书。3= ▶ 循环集(绑定(接受))(接受!(已承诺n,val)=1=2组件接受者(\)接口(端口准备)|端口接受度|端口学习)行为(\)new(promised,num,value:Int);已承诺! (0)和num! (0)和价值!(0);Paxos第一阶段(准备好了吗?(建议n);//如果这比上次承诺的时间短,则接受答应了吗?(n)如果(命题n> n)(编号?(ln)值吗(lv)和num!(ln)和价值!(lv);Loopset(绑定)(准备!(命题n、ln、lv));答应了!(proposal n))其他(承诺! (n)())Paxos第二阶段| rep ( accept?(请求n,请求v);//如果未承诺新的建议,则接受。答应了吗?(n)- 答应了!(n);如果(请求的n≥ n)(num?(i)值吗(v);//最后,该提议已被接受。7循环集(绑定(学习))(学习!)(请求n,请求v));数字!(请求的n);值!(请求v)=4=5=6组件学习器()接口(端口学习)。行为(REP(学习))。(接受n,接受v);如果(M(接受n))(你是他的朋友(接受v)=8图1。 Paxos架构:Paxos算法金斯有一个提议者,他想提出一个提议。一个命题可能是非常复杂的,但为了我们的目的,我们可以认为它被限制在一个最小表达式,由两个数字组成:命题数和命题值。命题者通过内部作用(τ)的方式任意地选择命题数(τ)。有了这个数字,它建立了一个准备月-圣人,这是发送给每一个接受者,要求它只是想如何接受这个建议。接收后,每个接受者进入新并发中的第一阶段34C.E. Cuesta等人理论计算机科学电子笔记154(2006)25线程。接受者受两条基本规则的约束:第一,只要他没有承诺考虑任何其他索引号更高的建议,他就愿意接受他收到的任何建议。第二,它从不说谎:这意味着它从不自相矛盾。因此,收件人会检查其刚刚收到的准备好的消息的数量。如果这个数字低于你承诺接受的最后一个建议的数字,那么这个消息就被简单地忽略了。另一方面,接受者回答提议者,承诺接受带有此编号的正式提议,除非在此期间收到此新的承诺消息由三个数据组成:此接受者承诺支持的建议的编号,以及它以前接受的最后一个建议(编号和值)的副本(如果有)。然后发送此消息,结束第一阶段。第二阶段开始于提议者从接受者接收到此消息时。因此,提案人首先检查此承诺消息是否指的是其试图提交的提案。在这种情况下,这意味着某人已经承诺支持该提案,因此该提案将被发布。现在,提案人必须决定其中包含的价值正如我们所看到的,每个承诺消息都包括关于接受者接受(而不仅仅是承诺)的最后一个建议的附加现在,提案人检查这些数据,并将其与自己的记录进行比较。如果接受的建议比它所知道的最后一个建议更近(具有更高的数字),则它被存储。简而言之,提案了解到什么是回应中最新被接受的提案,并记住了这一点,特别是包含的价值。最后,提案人必须决定是否有多数(无论定义如何)的接受者作出了承诺考虑当前提案的答复。如果是这样的话,那么它可以要求他们正式接受它。这个接受的消息是由建议的数字和一个建议的值组成的:Paxos算法的唯一如果任何先前的建议被接受,那么建议者已经知道要建议的价值。如果不是,则可以随机选择该值,并且它作为内部决策(tau)来执行该操作。但是现在,每个接受者都开始第二阶段,并为每个接受消息的接收启动一个新线程。现在,这封信正式要求你接受所附的建议书。如果所请求的建议书的数量小于最后一个承诺的建议书的数量,则接受者检查。如果是这样的话,当前的一个只是被忽视了。在另一种情况下,正在讨论的建议必须被接受。然后,学习者会被告知这一接受。这是第二阶段的结束C.E. Cuesta等人理论计算机科学电子笔记154(2006)2535最后的结尾非常简单。即使大多数接受者同意接受同样的建议,这也是不够的:我们必须知道这已经发生了这是学习者的角色,因此他们有最后的决定权。对于每一个被接受的建议,学习者都会收到消息;现在,他们只是决定是否有大多数接受者同意了同一个建议。在这种情况下,已经达成了共识。尽管如此,图1中的体系结构仍然是一个抽象的规范,因为有两个未指定的细节,在这里用函数MAJORITY和USETHIS CONSENSUS来表示。后者的目的只是作为一个占位符,在这里,体系结构可以适应未来的使用,决定如何处理所获得的价值。前者的目的只是为了抽象出关于用于决定哪种集合构成接受者的多数的标准的任何细节。3.2多播:连接性和多播性Paxos算法不仅是固有分布的,而且它还依赖于匿名通信。Paxos synod中参与者之间的交互被设想为广播或多播。消息不是发送给任何特定的演员,而是通过系统传播的,并且必须被每个人接收,或者至少被某些特定集合的大多图1中提供的Paxos算法的描述试图几乎是完全一般性的。也就是说,这三个角色的行为应该适用于Paxos体系结构的任何渲染但是,一个独立的结构和行为;这意味着组件之间的交互取决于底层体系结构中的连接模式。在算法中,某些交互被认为是某种多播,因此每个相关的发送/接收动作的语法是不同的,这取决于它们的端口的连接性。在图中的描述中,几个动作出现在下划线中;这些是多个动作,它们取决于系统的拓扑结构本规范与Paxos算法的另一种表示形式之间的唯一区别仅限于此。在这些操作中,标记有偶数的操作是接收;标记有奇数的操作描述的是发送。在这两种情况下,我们都必须记住,它们指示多播交互,这些交互必须与特定的连接模式匹配。图1中对多个动作的描述假设了图4中稍后提供的最终结构,并且该结构是全网状模式:每个节点都直接连接到任何其他节点。每一个提议者都与每一个接受者保持着两种联系--准备和接受--每一个接受者都与每一个学习者联系在一起结果片段的定义(坐标),即36C.E. Cuesta等人理论计算机科学电子笔记154(2006)25动作方面)在图2的上半部分中提供。在一个完整的网状方法中,每个动作和每个角色都有一个私有连接,所以一些多重性已经得到了在发送操作的情况下,我们只需要确保在一个端口中发送的每个消息都被绑定到它的每个组件接收广播公司必须为每个组件提供发送消息的副本(如果有)当连接存在时,它是通过使用一个简单的习语,基于循环集结构和内省绑定函数来完成的。他们在一组有界连接上做了一个循环,通过其中的每一个发送一个副本。现在,广播接收的情况是完全不同的。从上面可以很容易地推断出,每个组件实例都通过其自己的专用连接接收其自己的消息副本;这意味着在该广播接收和专用接收之间没有区别。[10]图2。 使用Paxos架构协调Gateline3.3使用Paxos架构进行Paxos体系结构实际上只是一个体系结构的一个片段,它将用于协调另一个体系结构的行为。 它通常能够被"插入"到几乎任何一种系统中。唯一的要求是基础架构使用一些值,这样就可以实现共识。"[10]为了便于演示,所选的基础架构是最简单的类型之一:经典为了使协调具有某种效果,并且可以观察到这种效果,结构应该是可以改变的,在某种条件下引入某种不同的因此,我们设计了一个简单的条件管道,其中管道不是C.E. Cuesta等人理论计算机科学电子笔记154(2006)2537组件过滤器(接口(端口I)|端口O)连接器门(接口(端口L)|端口R|端口打开)行为(\)代表(打开? (n反式);对于(1... 反式)(L?(日期); R!(日期)\组件Gateline(接口(端口输入)|端口输出)配置文件()F[N + 1]:过滤器|G [N]:门|\bind(对于k(1.. N)(G[k],L = F[k],O |G [k],R = F[k +1],I|F[1].I=输入|F [N +1].O =输出)直接链接任何更多。默认情况下,它们现在是关闭的,并且它们只会打开,这取决于一个事件,即一个号码的接收从现在开始,我们将称之为条件管道门,结果结构是一条门线图3提供了门的接口和行为的详细描述,以及门的打开由一个开放端口控制,该端口在门线结构中是未连接的,并且该端口被设计为接收多个启用的传输。接收到这个数字就打开了门;然后,允许从输入端向输出端发送确切数量的数据单元(消息)。门线不符合一个完整的体系结构,除非门的开放端口连接到某个东西;否则它们总是关闭的,交互也不会发生在一个不协调的版本的门线,每个门将收到一个不同的号码在一个不同的时刻,和信息流将几乎是不可能的。相比之下,在协调版本中,每个门将在相同的时刻接收相同的编号:整个门线将同时打开,并且特定数量的数据将能够在系统中流动。图3。Gateline:条件性(参数化)N-大小管道然后,我们的目的是使用Paxos架构来决定一个数字,然后将此数字通知给Gateline网关。以这种方式,协调将被添加到系统中的仅仅一个模块化块中。4叠加一个协调方面(英文)如前所述,协调不仅是一个独立的问题,而且是建筑层面的一个相关问题。出于这个原因,它是一个很好的建筑维度的例子,可以通过使用方面来指定。38C.E. Cuesta等人理论计算机科学电子笔记154(2006)25Paxos Synod方面的片段(配置文件()P[3]:命题者|A [3]:接受者|ecomrolp L[5]:学习者|\bind(对于i(1.. 3)(对于j(1)3)(A[i]准备= P[j]准备|A [i].接受= P[j].接受|对于k(1)5)(A[i].学习= L[k].学习)\债券声明让Coord Gates越过 Gateline(Coord Gatesis= true让Coord Gatesis= nrec X(Coord Gatesχ Ω X)USE THIS CONSENSUS(值)اshift bcomp.打开(值)以技术为导向。在本节中,我们将把Paxos体系结构描述为一个协调方面,它被编织到门线结构中。我们对Paxos算法的面向方面的渲染将整个结构呈现为一个人字形,也就是说,呈现为一个架构片段。这在两个方面是一致的:第一,Paxos体系结构本身是一个部分描述,因为只有当它被叠加到一个基本规范上时,它才是完整的;第二,它表明关注本身可以被模块化,因此它最好被描述为另一个结构,包括几个组件和它们之间的关系这证明了我们选择一个复合结构来指定PiLar中的叠加是合理的。在PiLar中,编织函数是一个叠加关系;这意味着每个人字形都是一组σ-分量,叠加在Katz构造中的一些β-分量上因此,该语言不仅提供了一种定义chevron的方法,而且还提供了一种类似连接器的基本结构,用于将chevron集成到体系结构中。图4中的规范以Katzian叠加的形式提供了Paxos体系结构的描述,使用了PiLar 1中的语法。2.图4。 协调方面:采用全网格方法的Paxos Synod在这个特殊的配置中,我们在Paxos架构中有三个提议者、三该描述提供了完整的网状方法:算法中的每个组件都直接连接到每个其他组件。这意味着每个提议者都绑定到每个接受者,每个接受者也绑定到每个学习者,从而在片段中定义了33个连接。Chevrons可以通过使用一对一的显式映射(编织关系)叠加在建筑元素上。但是,方面定向最有趣的特征之一是量化;这意味着我们有一些表达来识别一组连接点,在这些连接点处,V形将被插入到基础架构中。某些方面的语言使用pointcut或类似的概念来收集这样的信息。C.E. Cuesta等人理论计算机科学电子笔记154(2006)2539一组连接点。 P1Lar 1. [2]也有这种量化的手段,它被称为债券断言(bondassertion)。断言是一个逻辑表达式,它必须由体系结构来填充。PiLardefines动态系统,其中结构发生变化;这必须在定义这些公式时加以考虑。[10]出于这个原因,断言的语言必须考虑到系统在时间上的演变,因此我们必须选择一个时间上的行动逻辑。这意味着连接点不仅是空间位置,而且是时间感知的条件。这不仅与并发理论中的现有实践相一致,而且也与动态体系结构所描述的情况的直觉相一致。在这种情况下,实际上并不需要时间框架,因为我们想做的唯一事情是将Paxos Synod V形叠加在Gateline上,并使组合保持不变。这可以在体系结构实例化期间完成,因此非临时谓词将是足够的。事实上,断言中的第一个谓词,Coord Gates,它只包含一个动作谓词,已经在每个门上强加了每个学习者,而这正是我们所需要的行为,所以实际上不需要进一步的说明图4中详细说明的债券声明实际上并不适合手头的问题,因为它比它所需要的要复杂得多。事实上,断言中的时间公式放松了对系统的约束,因为它不要求立即采取行动,而只是说这一行动最终应该采取行动它只是作为我们能够使用的那种时间逻辑公式的一个样本而提供的PiLar 1中的语句语言。2直接受到模态μ-演算的启发,μ-演算是一个被认为是"规范"项逻辑的固定点演算它们的公式是通过将固定点运算符插入到Hennesy-Milner风格的基本(模态)动作逻辑中来定义的,该逻辑可以很容易地与任何过程代数相关。虽然键断言的语法很简单,但它们的μ演算语义却不简单。其结果是,在PiL中的temporal支持仍然是一个很难使用的问题。 很可能,它还需要改进可用性,找到适当的抽象级别,并可能包括一些冗余的时间模态,因此总是或最终,但总是考虑到这些使用分支时间语义[10]。5结论本文首先提出了三个基本建议,即:协调是一个独立的问题,与之相关的问题应该在一个独立的实体中具体说明;协调是一个比交互更高阶的抽象,因此DL特别适合描述它;以及协调是一个独立的实体,它是一个独立的实体。40C.E. Cuesta等人理论计算机科学电子笔记154(2006)25通过使用方面技术,可以在单独的体系结构中引入体系结构关注。虽然本身很有趣,但示例的特定特征不应被误导。[10]首先,关于Paxos架构的重要一点是,它将协调问题封装在自身内部。第二,之所以选择它,是因为它是一个分布式算法,由多个模块化角色组成。因此,即使我们将协调行为分散到整个体系结构中,它仍然可以被分离成一个独立的体系结构模块。拥有某种中央协调器的简单情况不需要任何理由--将这样一个单组件系统与一个基本架构相结合,相比之下将是微不足道的此外,我们还没有使用Paxos架构也提供容错的总之,它表明,协调并不是我们可以叠加在一个架构上的唯一问题;事实上,我们可以同时引入几个问题。另一方面,我们也可以看到,在这种情况下,将几个问题分开是多么的困难-在这种特殊情况下,我们可以只使用一个基本的事务提交算法来保持协调--反过来,这个算法可以被描述为Paxos算法的一个特定情况[ 13 ]--但是稍后重新安装容错将更加困难我们以前在P.I.L.A.上的工作已经偏离了对体系结构层面协调的描述,特别是通过使用反射支撑[4]。最近的一些工作集中在协调的分离上,作为一个独立的问题,但仍在使用反思。在这种情况下,我们在[5]中描述了Paxos算法的一个反射版本,使用了稍微不同的表示。方面的观点已经被证明是真正有用的,因为它比一个反射性的基础结构简单得多,但它有很多优点。虽然我们将人字形定义为不对称方面显然是受到了实现层模型的启发,但我们已经有意识地避免了直接翻译它们的时机;我们坚定地相信,不同的抽象级别需要不同的机制来实现这一点。在体系结构层面上,我们所使用的叠加结构比面向方面的编程语言中包含的一组类似对象的抽象要自然得多;而且它们缺乏它已经存在的理论基础。参考文献[1] 安德鲁斯, J. H., 面向方面的编程的过程代数基础,在:WEBA. 米泽和S. Matsuoka,编辑,反思2001:第三届国际会议C.E. Cuesta等人理论计算机科学电子笔记154(2006)2541Metalevel Architecture and Separation of Crosscut Concerns,计算机科学讲座笔记2192,2001年。[2] Bouge,L.A ND N. Francez,ACompositionalApproachtoSuperimipiiion,in:15thACM编程语言原理年度研讨会,POPL240-249。[3] C 是 A , C 是 C 。E. P.delaFu ente , M.Barr io-S o lorza n oa nd E. Beato ,CoordinationiaReflective体系结构描述语言,in:F.Arbab和C. Talcott编辑,协调模型和语言,计算机科学讲座笔记2315(2002),第141-148。[4] C是A,C是C。 E. P. d elaFuente,M. BarrioSol'orzan oa nd M. E. Beato,IntroducingReflectioninn体系结构描述语言,in:J.Bosch,M.绅士,C.霍夫迈斯特和J.Kuusela,编辑,软件体系结构:系统设计、开发和维护,Kluwer,2002年,第143-156。[5] C是A,C是C。 E. 和M。 P. R或may,P。 d elaF u entean d M。Barrio-Solorzano,Reflection-based,Aspect-oriented Software Architecture,in:F.Oquendo,B.Warboys和R.Morrison,编辑,软件体系结构,计算机科学讲座笔记3047(2004),第43-56.[6] 哈里森,W. H.,H. L. Osher和P.L. Tarr,《软件组合的非对称与对称组织范式》,IBM研究报告RC 22685(W 0212 -147),ThomasJ.沃森研究中心,IBM(2002)。[7] 卡塔拉,M.和S。Katz,《方面的体系结构观点》,载于:第二届面向方面的软件开发国际会议论文集(AOSD1-10.[8] Katz,S.,分布式系统,ACM编程语言和系统学报15(1993),第100页。337-356.[9] Kellomaki , P. A 、 F 或 rmalBasssf 或 rAspect-OrietedSpecionwithSuperposion , in : G.T.Leavens和R。Cytron,编辑,FOAL 2002年学报:面向方面的语言的基础,2002年,第27-32。[10] 兰波特,L.,"有时候"是"有时候"不是"永远"。关于程序的时间逻辑,在:thProc. 7 ACM Symp. 编程语言原理(POPL'80),1980年。[11] 兰波特,L.,《兼职议会》,ACM计算机系统学报16(1998年),第133-16
下载后可阅读完整内容,剩余1页未读,立即下载
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)