没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记182(2007)201-217www.elsevier.com/locate/entcs自我管理软件设计Peter Van Roy彼得·范·罗伊1,2University of Computing Science and Engineering计算科学与工程系新卢万摘要大多数软件是脆弱的:即使是最轻微的错误,如改变一个位,可以使它崩溃。 随着软件复杂性的增加,开发技术已经跟上了管理这种脆弱性的步伐。 但今天有一个新的挑战。 复杂性由于两个因素而迅速增加:由于因特网的足够可靠性和带宽而增加使用分布式系统,以及由于向因特网添加许多新计算机(例如,移动电话和其他设备)。为了管理这种新的复杂性,我们提出了一种基于自我管理系统的方法:系统可以在其环境发生变化的情况下保持有用的功能。本文激励这种方法,并给出了一些想法,如何建立一般的自我管理软件系统。该方法的一个重要部分是将系统构建为交互反馈回路的层次结构。我们给出这些系统的例子,我们推导出一些设计规则。SELFMAN项目正在将这些想法详细阐述为编程方法和实施。保留字:软件开发,自我管理,分布式系统,复杂性1引言软件是脆弱和高度非线性的:即使是一个小错误也可能造成灾难性的后果。重大灾难的发生是由于一些小错误,比如Fortran程序中省略了逗号,或者由于阿尔法射线而改变了位。到目前为止,这还没有不适当地妨碍正在开发的软件的数量随着软件复杂性的增加,软件开发技术也随之发展。这种情况类似于爱丽丝中红皇后软件开发现在面临着一个新的1本 文 旨 在 激 发 讨 论 ;欢 迎 提 出 任 何 意 见 ! 这 项 工 作 是 由 欧 盟 资 助 的 SELFMAN 项 目 ( 合 同 34084 ) ,EVERGROW项目(合同001935),和核心GRID网络的额外工作(合同004265)。我们把卢是Quesada,BorisMejias,RaphaelCollet,Yves Jaradin、Kevin Glynn和Seif Haridi对本文草稿的评论。2电子邮件地址:pvr@info.ucl.ac.be1571-0661 © 2007 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2006.12.043202P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201挑战:由于两个原因,复杂性正在迅速增加。首先,互联网基础设施的可靠性和带宽已经达到了可以构建大型分布式应用程序的程度。这些应用程序的例子包括各种文件共享程序(Napster、Gnutella、Morpheus、Freenet、Bit Torrent等),协作工具(Skype和其他信使工具),大型多人在线角色扮演游戏(MMORPG)(魔兽世界,龙与地下城等)和研究测试平台(SETI@home [25],PlanetLab [12]等)。现在存在用于构建这样的应用的技术,例如,Web服务和网格软件。第二个原因是连接到互联网的小型设备数量的增加。例如,移动电话现在是具有互联网连接性的全边缘计算节点,并且诸如Zigbee、蓝牙和WiFi之类的协议促进了小型设备之间的网络连接。如何解决大规模分布式系统的编程问题?这样的系统具有新的属性,大大增加了编程的复杂性:规模(大量独立节点),部分故障(系统的一部分故障),安全性(多个安全域),资源管理(资源本地化),性能(利用多个节点或分散负载)和全局行为(整个系统的紧急行为)。这些属性中的每一个都被孤立地研究过。例如,分布式算法领域在许多情况下都有处理部分故障的解决方案。但这些属性并没有被放在一起考虑。本文的目的是提供一些想法如何做到这一点。全局行为对于大型系统尤其重要。它们必须被仔细地设计,否则系统在受压时将不能很好地工作.理想情况下,它应该快速收敛到所需的行为,并在系统环境发生变化时保持不变。但它可能会崩溃、振荡或表现出混沌行为。这种不稳定的行为已经在电网中观察到,并导致大规模停电[15]。其中一个原因是因为电网2自我管理系统为了构建具有良好行为的大规模分布式系统,我们需要一个框架来考虑它们。这样一个框架应该是什么样的?为了降低系统的复杂性,它应该能够尽可能地管理自己的问题这导致我们提出自我管理系统作为一个合适的框架。一般来说,自我管理系统是一个能够在环境变化的由于IBM的自主计算计划,自我管理系统最近被带到了最前沿当计算机系统变得很大时,管理它们的成本变得令人望而却步。该计划旨在通过将人类从管理循环中移除来降低成本。 因此,人类的角色是管理策略,而不是维护机制。这大大P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201203减少了人工干预的需要构建自我管理系统的另一个领域是结构化覆盖网络[1]。本研究的灵感来自于流行的对等网络协议。介绍中提到的许多应用程序都是基于这些对等网络的。与基于随机邻居通信的对等网络不同,结构化覆盖网络提供保证(如果信息存在,则保证信息被找到)和效率(广播不像在例如,随机邻居网络,例如Gnutella中使用的网络)。结构化覆盖网络提供了原始的自我管理行为:它们重新组织自己,以保持其功能,以应对环境变化,如故障和过载。结构化覆盖网络已经导致了在各种领域中使用的鲁棒软件,诸如鲁棒分布式通信网络和鲁棒存储服务的实现,这些鲁棒分布式通信网络和鲁棒存储服务尽管节点周转率高(节点“流失”)也继续提供服务这两个研究领域,自治系统和结构化的覆盖网络,吸引了人们的注意力再次自我管理系统。但自我管理系统实际上是一个非常古老的想法。该领域作为一门学科的开始可以追溯到20世纪40年代诺伯特·维纳对控制论的定义系统论的基本思想是研究系统的概念、性质和设计。有很多方法可以定义系统的概念[24]。在本文中,我们递归地将系统定义为一组连接在一起形成一个连贯整体的组件(称为子系统)。主要的问题是理解系统和它的子系统之间的关系:我们能否预测系统系统理论在很大程度上仍处于早期阶段。近年来的研究成果没有系统地编入教科书,其思想也没有得到应用到计算机科学中去。W.罗斯·阿什比(Ross Ashby)在1956年写了一本入门教科书,至今仍值得一读。杰拉尔德·M温伯格在1975年写了一篇介绍,解释如何使用系统理论来改善一般思维过程[28]。在计算机系统领域,教科书只存在于专门的子领域,如分布式算法[21]。我们认为,现在正是将系统理论应用于软件建设的时候。本文给出了现实系统的例子来激励这一目标,并探讨如何根据系统理论构建软件3设计自我管理系统如何设计一个自我管理的软件系统?我们还没有一套通用的设计技术,但是我们可以讨论几个重要的方面:反馈回路、全局属性和通用的架构框架。事实证明,设计反馈回路是最基本的。反馈循环目前被用于计算集群的自治管理,例如它们被用于J2EE集群[6]和网格系统[2]。但是反馈回路204P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201计算纠正措施更适用于系统设计。我们给出了一些用反馈回路构建的系统的例子Andrzejak等人的论文 [2]广泛介绍了在设计具有反馈回路的自适应系统时可能有用的不同学科。本文件是狭窄的:它限制自己的循环是如何组织的,他们如何相互作用,并与分布式编程的架构问题。3.1反馈回路反馈回路的概念是系统理论的基本要素。反馈回路由三个元素组成,它们共同与子系统交互(参见图1):一个元素监视子系统的状态,一个元素计算纠正措施,以及一个元素将纠正措施应用于子系统。为了本文的目的,我们认为这些元素是并发软件代理,通过异步消息传递进行交互。完整的系统可以被描述为一个相互作用的反馈回路图。反馈回路可以通过两种主要方式相互作用。最简单的交互是两个回路都包含相互依赖的系统参数,即,它们通过环境相互作用。这就是所谓的stigmergy。第二种形式的交互是一个循环管理另一个循环,即,第一循环连续地适配由第二循环实现的策略。在这两种情况下,系统的全局行为都Fig. 1. 反馈回路3.1.1两个简单的例子第一个例子取自Wiener [29],如图2所示。它由两个相互作用的反馈回路组成,具有违反直觉的全局行为:在一家有空调的酒店里,一个原始的部落成员试图通过生火来取暖。这导致空调工作更努力,所以结果是他越努力生火,温度就越低。在该示例中,两个循环检测彼此依赖的系统参数,即大厅的不同部分中的温度。图中的每个块都是一个并发代理,它不断地向箭头方向的其他代理发送异步消息即使每个循环都是孤立的,子系统监控代理致动剂P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201205酒店大堂在大堂测量温度测量火灾附近的温度部落人(调节恒温器)酒店大堂测量部落成员的温度测量恒温器的温度恒温器部落男子火酒店大堂计算纠正措施部落人(如果太冷就生火)恒温器(run空调如果太热)致动剂子系统监控代理图二. Wiener是稳定的,3两个循环的结果是系统变得不稳定,即,温度将继续降低(直到系统到达边界,然后其行为将再次改变)。我们的结论是,这是不够的,增加一个负反馈回路,以确保现有的系统稳定!由于新回路与系统的相互作用,结果很可能不稳定图三. 维纳正确的解决方案如图3所示。部落里的人并没有生火,而是简单地调整了一下恒温器。这保持了空调回路的稳定性。这是一个循环管理另一个循环的例子。这说明了一种设计3在负反馈中,系统参数监测值的增加会导致降低系统参数的校正动作。在正反馈中,校正动作增加系统参数。运行空调斯托克恒温器(run空调如果太热)运行空调206P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201计算机GUI界面致动剂监控代理人类用户键盘和鼠标显示应用规则:要修改系统图四、显示为反馈循环的单用户应用程序第二个例子如图4所示。这显示了一个通用的单用户应用程序作为反馈循环结构。我们给出这个例子是为了说明反馈循环在编程中通常是有用的,而不仅仅是图2这样的人为例子。如果你用正确的心态去看待,反馈循环在软件系统中是无处不在的。图4中循环的三个元素都在一台计算机上运行,被管理的子系统是一个人类用户。监视和执行代理是计算机的GUI界面。请注意,我们认为用户而不是应用程序是被管理的子系统。这种观点是有利的,因为它让我们以有趣的方式扩展反馈环结构我们可以在第一个循环周围放置第二个循环来监视应用程序当用户运行两个应用程序并在它们之间传递信息时,我们有两个通过stigmergy交互的循环。本文的其余部分给出了更多以反馈回路结构显示的系统的实例,包括最初不是以这种方式设想的系统3.1.2使用程序属性设计具有反馈的系统在电子学中得到了广泛的研究,通常使用运算放大器和锁相环等构建模块。这些系统利用了这样一个事实,即存在构建块行为的良好(分段)线性这是一个可以利用的强大条件。但是线性可能是强加于计算机系统的太强的条件,计算机系统默认是高度非线性的,例如,改变单个比特可能具有重大影响。可以使用比线性更弱的性质,该性质可以由计算机系统满足并且给出令人满意的设计理论。然后,方法是首先选择一个有助于推理程序及其全局行为的属性,然后构建一个满足该属性的程序。这可以大大简化程序设计。请注意,一种可能的失败模式是属性本身不再有效。P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201207其他投入有意识地控制身体和呼吸当O2降至阈值时测量O2血液中监测呼吸测定CO2血液中人体内呼吸器检测气道阻塞喉痉挛(密封空气管)呼吸反射当CO2增加到阈值时气道充分阻塞时暂时触发喉痉挛一个示例性质是单调性或严格单调性。在严格的单音调系统中,当输入在一个方向上改变时(例如,在一般意义上增加),输出也将沿相同方向变化以单调性为基本性质,设计具有反馈的系统是足够的负反馈放大器可以使用严格单调性来构建。另一个可能有用的比线性弱的性质是连续性,但连续性一般不足以保证稳定性。我们注意到,在反馈程序设计理论中可能有用的两个进一步的性质是确定性和连续性。使无意识(并将CO2阈值降低到基础水平)增加或降低呼吸频率并改变CO2阈值(最大值为屏气断点)监测剂图五. 人体呼吸系统3.2具有反馈回路的系统设计:人体呼吸系统让我们给出一个使用反馈回路的实际设计的详细示例。我们的例子取自一个生物系统,即人体。生物系统必须在自然环境中生存,而自然环境可能特别恶劣。出于这个原因,我们认为研究生物系统是了解如何为更复杂的系统设计软件的有用方法。我们的例子是人类的呼吸系统。图5显示了这个系统的不同组件以及它们如何交互。我们从对系统行为的精确医学描述中得出了这个数字与现实相比,这个数字稍微简单了一些。我们忽略了与身体其他部分的相互作用。尽管如此,它仍然足够完整,可以提供许多见解。有四个反馈回路:两个内环(呼吸反射和喉痉挛),一个控制呼吸反射的环(意识控制)和一个控制意识控制的外环(跌倒)208P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201外环(拥塞控制)内环(可靠传输)计算要发送的字节(滑动窗口协议)计算策略修改(修改吞吐量)子系统(将数据包发送到目的地并接收ACK的监测吞吐量监测(接收确认)执行器(send数据包)无意识)。从这个图中我们可以推断出在许多现实情况下发生的事情例如,当被液体或食物噎住时,喉部收缩,我们暂时无法呼吸(这称为喉痉挛)。我们可以有意识地屏住呼吸:这会增加二氧化碳阈值,从而延迟呼吸反射。如果你尽可能长时间地屏住呼吸,那么最终会达到屏气阈值,呼吸恢复无论如何都会发生。一个受过训练的人可以屏住呼吸足够长的时间,以便首先达到O2阈值,然后在没有呼吸的情况下失去知觉。当无意识时,正常的呼吸恢复重建。我们可以从这个系统中推断出一些合理的设计规则最里面的循环(呼吸反射和喉痉挛)和最外面的循环(失去知觉)是基于使用单调参数的负反馈。这给了他们稳定性。中间的回路(意识控制)是不稳定的:它是高度非线性的,可能在负反馈或正反馈的情况下运行。 它是迄今为止四个循环中最复杂的。我们可以证明为什么它被夹在两个更简单的循环之间。一方面,意识控制管理呼吸反射,但它不必了解这种反射是如何实现的细节。这是一个实现抽象的嵌套反馈循环的例子。另一方面,最外层的环覆盖意识控制,因此它不太可能使身体的生存处于危险之中。有意识的控制似乎是身体的通用问题解决器:它出现在许多(但不是所有)身体的反馈回路结构中。这种力量意味着它需要检查。发送发送流确认见图6。 带有两个嵌套反馈循环的P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201209SDSDSDDS不可靠的网络DD管理接收窗口管理发送窗口D转SS转D发送ack发送分组监控收到的确认监 控 收到 的 数据包3.3设计程序上一节中所阐述的系统设计风格可以应用于程序设计。然后,编程包括建立相互作用的反馈回路的层次结构。让我们给出一个简单的例子,其中有两个嵌套的反馈回路,实现了一个带拥塞控制的可靠字节流传输协议(这是TCP协议的一个变体)。该协议从源节点向目的节点发送字节流。 图6显示了两个反馈回路在源节点处的情况。内部循环对数据包流进行可靠的传输:它发送数据包并监视哪些数据包成功到达。内部循环管理滑动窗口:执行器发送数据包,以便滑动窗口可以前进。滑动窗口可以被看作是使用单调控制的负反馈的情况外环执行拥塞控制:它监视系统的吞吐量,并通过改变策略或者通过改变内部循环本身。如果缓冲的发送流增长太大或确认速率降低,则它会修改内部循环的工作方式,例如通过降低发送确认速率或发送速率。如果传输停止,则外循环可以终止内循环并中止传输。这种结构是多智能体系统的一个特例。 图6中的每个块都是一个单独的代理,它与其他代理同时工作,并向其他代理异步发送消息。两个反馈环中的每一个都根据给定的策略实现一个任务。内部循环的策略由外部循环决定。因为系统分布在两个节点上,所以设计的一部分在于将每个代理置于一个节点上。图6的示例只有两个嵌套的反馈循环。在实际系统中,通常会有更多嵌套的反馈回路。特别是,最外层的循环决定了系统与其环境之间的主要接口发送接收河流S S见图7。 显示分布210P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)2013.4反馈回路和分配之间的相互作用图6的协议在由两个节点组成的分布式系统上运行。图6只显示了源节点上发生的情况。图7更完整地描述了图6的内部循环,显示了在两个节点上的执行。在图7中,每个组件都根据它是在源节点上执行还是在目的节点上执行而用S或D进行注释该协议可以看作是两个反馈回路(S回路和D回路),每个回路在一个节点(S或D)上执行,通过不可靠网络上的stigmergy进行交互。如果一个节点失败,那么它的循环就会消失,而另一个循环会看到网络行为的变化另一种看待协议的方式是将其视为一个单一的分布式反馈回路,其中的部分在源节点和目的节点上执行。这个例子提出的一个有趣的开放性问题是如何设计分布式反馈回路。这是不平凡的,因为循环的设计,它的分布和它打算容忍的部分故障之间的相互作用。设计这些系统仍然是一个开放的研究问题。结构化覆盖网络是一种有趣的特殊情况,如下所述其他特殊情况包括分布式算法理论的一部分,如自稳定系统[32]。这些系统能够经受住大类瞬时故障。3.5结构化覆盖网络我们通过概述如何根据反馈回路来制定结构化覆盖网络来完成我们的一系列示例。结构化覆盖网络的最基本功能是自组织大量计算节点,以提供可靠和高效的路由,尽管节点不断加入和离开网络[1,18]。节点可以通过两种方式离开,或者通过故意的动作,或者通过节点或其网络连接的故障。在任何时候,非故障节点之间的路由都必须正确和高效。图8显示了一个结构化覆盖网络的反馈回路结构,其中n个计算节点的编号从0到n-1。详细绘制了节点0;示意性显示了其他节点。结构化覆盖网络的路由组织由两个层次组成。第一层是一个环,其中每个节点都有直接的通信链路(称为手指)到固定数量的后继者。这确保了正确性(每个节点都可以通过环到达所有其他节点)和容错性(f-1个节点的故障不会影响可达性)。第二层增加额外的链接以提高效率。路由算法使用收敛准则来确保最终到达目的节点。每个路由跃点都会缩短到目的地的距离,直到距离为零。许多众所周知的结构化覆盖网络,如Chord和DKS,都是以这种方式组织的。通信链路提供故障检测。当节点检测到链路故障时,它会重新组织其本地手指表。因此,结构化覆盖网络的正确操作基于两个收敛性质:P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201211手指节点1............节点2节点3.............故障检测器更新手指表计算重组节点0指针表路由器节点n−1....... .. .见图8。 一种结构化覆盖网络• 在每个节点内,手指表收敛到正确的内容。• 在节点之间,传输中的消息收敛到其目的地节点。从每个节点的角度来看,被管理的子系统由它所链接的节点集组成。当一个节点离开或失败时,它最终会被从包含它的每个集合中删除。当一个新节点加入时,它会被赋予一个初始集合,该集合取决于它在环中的位置。由于这些操作是常见的,这意味着反馈结构正在经历频繁的变化。Ghodsi [18]给出了具有上述结构的结构化覆盖网络DKS的算法和实现,并证明了它在假设故障检测器是强完备的情况下确实正确路由[17],即,每个节点崩溃最终将被永久检测到。DKS所做的结构修改被设计为原子的,并保留了覆盖网络的拓扑结构。212P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201根管理程序监督程序程序处理见图9。 Erlang程序4相关工作计算机科学的几个领域已经使用了反馈环体系结构。本节给出两个例子,即Erlang容错架构和实现智能行为的包容架构,并将它们作为反馈环架构的实例进行4.1Erlang系统Erlang系统旨在构建能够在软件和硬件故障中生存的分布式系统[3]。它已成功地用于构建具有极高可靠性的系统,例如AXD301 ATM交换机,其声称每年的停机时间仅为30毫秒[30]。Erlang是根据软件故障无法完全消除的假设设计的Erlang并没有试图消除它们,而是允许程序在它们之后继续存在。Erlang程序被组织为一组并发代理(Erlang术语中称为进程),它们通过异步消息传递进行通信。当进程中出现问题时,Erlang的哲学是让进程失败,让另一个进程处理恢复。Erlang使用一种称为管理树的概念来管理它。程序代理构成了管理程序树的叶子(参见图9)。Supervisor树中的每个内部节点对应于我们架构中的一个反馈回路。树中的第一个内部级别由监督代理组成,它们在程序执行中观察代理池。如果程序代理失败,则主管代理将使用数据库以获得一致状态,以一致状态重新启动程序代理。有两种Supervisors,AND Supervisors在池中的一个进程失败时重新启动所有进程,ORSupervisors只重新启动失败的进程。主管树中的第二个内部级别由一个根代理组成,它处理主管代理的故障。此根代理必须完全可靠。这是可能的,因为它是一个非常小的程序。P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201213环境中的机器人转发决策转向决定点方向传感器撤销判决障碍物检测器禁用禁用见图10。 包容式避障机器人的反馈回路结构4.2包容架构Rodney Brooks的包容架构是一种通过将复杂行为分解为通过其环境交互的简单行为层来实现智能系统的方法[7,8]。知识不是直接在系统内部表示的,而是通过系统在其环境中的状态间接包容体系结构已被用于成功地实现系统,以逼真的方式与其环境交互。例如,避障机器人可以设计有三层:向前移动层、转弯层和避障层。每一层都是一个不断观察世界的反馈回路。 各层具有优先级。 如果一层可以反应,它禁用较低层并执行其自己的动作。在Brooks的术语中,它抑制了对较低层的输入,并抑制了来自较低层的输出默认行为是向前移动。如果方向错误,则转向层将禁用向前移动层转向。如果存在障碍物,则避障层禁用其他两个层并执行避障机动。图10示出了作为反馈架构的该避障机器人。这是一个简单的例子,说明了基本原理。还有更多的改进版本的架构。在包容架构中,反馈回路通过污名化相互作用例如,在一个示例中,在机器人中,所有的回路检测机器人的位置并控制机器人的运动。在反馈循环体系结构中,反馈循环也可以具有策略/机制关系,其中每个循环修改由下一个最内层循环实现的策略。5总体架构框架现在让我们从上面的例子中退一步,总结一下构建自管理系统的通用架构框架系统被组织为一组并发组件,这些组件通过向前反过来回避操作214P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201C异步事件默认行为是组件是独立的。任何同步或依赖行为都必须显式编程。这种去故障在许多情况下都有很好的效果:对于Erlang [3]这样的容错系统,对于Mozart[13]这样的网络透明分布式编程系统,以及对于E [22]这样的安全分布式编程系统。它也与物理学中采用的复杂系统方法很好地匹配[14],例如,在解决推理问题的置信传播等方法中[33]。在3.2- 3.4节和第4节的例子反馈环通过污名化或管理相互作用。5.1高阶分量模型在自我管理系统中,系统能够监控和重新配置自己,也就是说,在运行时安装和更新自己的部分。 如果系统被构建为一组相互作用的组件,则组件可以安装其他组件。因此,组件是可以作为参数传递给其他组件的第一类实体。这被称为高阶组件编程。Fractal组件模型就是这样的组件模型的一个例子[9]。该模型已经被用作构建自我管理系统的框架[6]。在高阶组件模型中,当一个子系统发生故障时,确定哪个组件是罪魁祸首需要一些注意。Findler和Blume对此进行了研究[16]。反馈分量f输入端口输出端口系统组件新系统组件f(F,C)见图11。一种用于带反馈环5.2使用反馈回路有了正确的抽象,编程语言可以使带有反馈循环的编程变得简单。每个组件都是一个并发实体,有一个输入端口接受输入事件流,还有一个输出端口返回输出事件流。组件忽略不相关的事件。控制和内容事件都通过相同的端口。这些属性使得以模块化的方式组合组件变得容易。这种编程模型与使用的模型类似CFFP. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201215Guerraoui和Rodrigues以组合的方式定义分布式算法[17]。图11示出了分量组合器f,其采用两个分量F和C并且返回在反馈布置中组合F和C的分量f(F,C)组合子f满足如下性质:f(F1,f(F2,C))=f(F2,f(F1,C))。我们可以定义一个操作符||使得f(F1,f(F2,C))= f(F1||F2,C)。 该运算符是一种并行组合形式,它连接F1和F2的输入和输出流。f的变化取决于C是显式的(程序的一部分)还是隐式的(环境的一部分),也取决于反馈循环是否被管理。组合子f的语义需要考虑两个方面:• 输入和输出流的交错也就是说,C• C和F都具有传播延迟,即,当给出输入事件时,输出事件不会立即出现。5.3全局属性任何一般系统理论的一个重要部分都涉及全局性质,一个系统。它们是否可以为现有系统确定,我们是否可以设计具有所需全局特性的系统?后一个问题对于大规模计算机系统尤其重要,例如互联网或建立在互联网之上的分布式系统。一些重要的点是系统的稳定性,它在压力下的稳定性,以及系统即将崩溃是否可以在它发生之前被检测到。这些问题的答案存在于物理学中的复杂系统中。这种系统由大量非常简 单的 组件组 成, 但有时 它们可 以作 为计算 机系 统的有 用近 似。例 如,Krishnamurthy等人 [20]使用主方程方法对Chord结构化覆盖网络进行了分析研究。另一个例子是置信传播算法。该算法是根据大量简单节点之间的消息传递来定义的[33]。它已被用来解决SAT问题和其他问题。置信传播是一种通用的技术,它可以根据系统的局部性质来确定系统的全局性质。它可以作为反馈回路的一部分用于监控全局属性。6结论本文提出了一种构造大规模分布式系统的好方法,即把它们看作一般的自管理系统。我们建议建立自我管理的软件系统作为并发代理通过异步事件进行交互的集合,并使用具有第一类组件和组件实例的组件模型来实现。在这个框架中,自我管理系统被构建为相互作用的反馈回路的层次结构。第一个设计规则是整个系统(可能除了一个小内核)应该在一个反馈回路中。216P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201反馈回路通过两种机制相互作用,stigmergy(共享环境参数)或管理(一个回路控制另一个回路)。系统的全局行为取决于所有反馈回路,并且应该可以从回路结构中预测。我们将此建议与其他两个体系结构,即Erlang容错体系结构和包容体系结构实现智能行为。这些想法正在SELFMAN中实现,SELFMAN是2006年6月开始的欧洲第六框架计划的一个项目。我们打算将这些想法详细阐述为编程方法和实现。它应该像对象或组件一样容易编程和推理反馈循环。我们将设计和形式化一个组件模型,该模型基于Oz内核语言,扩展了Fractal模型的元素。我们将按照第5节的思路使用这个组件模型作为编程模型的基础,并在Mozart中实现这个模型[26,9,13,23]。我们将在此实现之上构建一个反馈循环体系结构,并将其用作自我管理复制事务存储服务的基础。引用[1] Aberer,K.,L. Onana Alima,A.戈德西Girdzijauskas,M. Hausperth和S. Haridi,The essence ofP2P:A reference architecture for overlay networks,第五届国际对等计算会议(P2P 05),IEEE计算机协会,2005年。[2] Andrzejak 、 Artur 、 AlexanderrReinefeld 、FlorianSchintke 、anddThorstenSchütt 、OnAdaptabilityinGridSystems、Future Generation Grids、Springer LNCS。[3] Armstrong,Joe,“Making Reliable Distributed Systems in the Presence of Software Error,”Ph.D. 瑞典Kista皇家理工学院博士论文,2003年 11[4] 阿什比,W。罗斯,&伦敦,1956年。互联网(1999年):http://pcp.vub.ac.be/books/IntroCyb.pdf。[5] Bertalan von Bertalan,Ludwig,[6] Bouchenak, S. 、 F. Boyer, D.我也是, S 。 Krakowiak , N. dePalma, V. 你好 , 还 有 J。 -B.Stefani , Architecture-Based Autonomous Repair Management : Application to J2EE Clusters , 2ndInternational Conference on Autonomic Computing(ICAC'05),2005,pp. 369-370.[7] 布鲁克斯,罗德尼A.,一个移动机器人的鲁棒分层控制系统,IEEE机器人与自动化杂志,RA-2,1986年4月,第10页。14比23[8] 布鲁克斯,罗德尼A.,没有代表的智能,人工智能47,1991,pp。139比159[9] 布 鲁 内 托 恩 E. , 诉 你 好 吗 , T 。 一 起 来 MLeclercq , andJ. -B.Stefani , AnO penC omponentModelanddits Support in Java , Proceedings 7th International Symposium on Convenient-BasedSoftware Engineering(CBSE 2004),Springer LNCS 3054,2004。[10] Carroll,Lewis,[11]Ceruzzi,Paul E.,《超越极限:飞行进入计算机时代》,麻省理工学院出版社,马萨诸塞州剑桥,1989年。[12] Chun,B.,D. Culler,T. Roscoe,A.巴维耶湖彼得森,M。Wawrzoniak和M. Bowman,PlanetLab:AnOverlay Testbed for Broad-Coverage Services , ACM SIGCOMM Comp. Comm. Review , 33 ( 3 ) ,2003.[13] 陈晓,王晓,等.分布式程序设计语言中的异常处理技术.北京:计算机科学出版社,2000,21(3):100- 101. Dony等人(编辑),Springer LNCS 4119,2006年。P. Van Roy/Electronic Notes in Theoretical Computer Science 182(2007)201217[14] EVERGROW : Ever-growing global scale-free networks , their provisioning , repair and uniquefunctions , Integrated Project , European 6th Framework Programme , 2004-7. 互 联 网 :http://www.evergrow.org。[15] Fairley,Peter,The Unruly Power Grid,IEEE Spectrum Online,Oct. 2005年[16] Findler,Robert Bruce ,and Matthias Blume,Contracts as Pairs of Projections,FLOPS 2006,April 24-26,2006.[17] Guerraoui,Rachid,and Luis Rodrigues,[18] Ghodsi,Ali,“大规模自管理覆盖网络的算法”,博士。论文,皇家理工学院(KTH),Kista,瑞典,2006年。[19] 《Autonomic Computing:IBM互联网:http://researchweb.watson.ibm.com/autonomic/.[20] Krishnamurthy,S.,S. El-Ansary,E. Aurell和S. Haridi,Chord under Churn的统计理论,第四届国际对等系统研讨会(IPTPS[21] Lynch,Nancy,“Distributed Algorithms”,Morgan Kaufmann,San Francisco,CA,1996.[22] Miller,Mark,“Robust Composition:Towards a Unified Approach to Access Control and ConcurrencyControl”,Ph.D.论文,约翰霍普金斯大学,巴尔的摩,马里兰州,2006年5月。[23] Mozart编程系统,版本1.3.2,2006年6月互联网:http://www.mozart-oz.org。[24] 网络控制原理 “系统”条目,2006年8月。互联网:http://pespmc1.vub.ac.be/ASC/SYSTEM.html网站。[25] SETI@home,2006年8月。互联网:http://setiathome.berkeley.edu/。[26] Van Roy,Peter,and Seif Haridi,[27] Van Roy , Peter , Ali Ghodsi , Seif Haridi , Jean-Bernard Stefani , Thierry Coupaye , AlexanderReinefeld,Ehrhard Winter,and Roland Yap,Self Management of Large-Scale Distributed Systems byCombining Peer-to-Peer Networks and Components,CoreGRID Technical Report TR-0018,Dec.2005年14日[28] Weinberg , Gerald M. , “An Introduction to General Systems Thinking: Silver AnniversaryEdition,”Dorset House, 2001 (original edi
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 京瓷TASKalfa系列维修手册:安全与操作指南
- 小波变换在视频压缩中的应用
- Microsoft OfficeXP详解:WordXP、ExcelXP和PowerPointXP
- 雀巢在线媒介投放策划:门户网站与广告效果分析
- 用友NC-V56供应链功能升级详解(84页)
- 计算机病毒与防御策略探索
- 企业网NAT技术实践:2022年部署互联网出口策略
- 软件测试面试必备:概念、原则与常见问题解析
- 2022年Windows IIS服务器内外网配置详解与Serv-U FTP服务器安装
- 中国联通:企业级ICT转型与创新实践
- C#图形图像编程深入解析:GDI+与多媒体应用
- Xilinx AXI Interconnect v2.1用户指南
- DIY编程电缆全攻略:接口类型与自制指南
- 电脑维护与硬盘数据恢复指南
- 计算机网络技术专业剖析:人才培养与改革
- 量化多因子指数增强策略:微观视角的实证分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功