英语原文共 10 页,剩余内容已隐藏,支付完成后下载完整资料
开放多线程交易拍卖系统设计
Jorg Kienzle,Alfred Strohmeier
软件工程实验室
瑞士洛桑联邦理工学院
瑞士
电子邮件:Alexander.Romanovsky@newcastle.ac.uk
Alexander Romanovsky
纽卡斯尔大学计算机科学系
电邮: Alexander.Romanovsky@newcastle.ac.uk
摘要
开放多线程事务形成了一个高级事务模型,它提供了不仅像事务系统中通常的那样控制和构造对象访问的特性,而且还提供了参与跨操作的线程。 该模型允许几个线程输入同一个事务以执行联合活动。 它提供了一种灵活的方式来操作在事务中执行的线程,允许它们被分叉和终止,但它限制了它们的行为,以便保证事务嵌套和事务间隔离的正确性。 此外,事务是异常处理上下文,因此模型提供前向和后向错误恢复。 在本文中,我们证明了该模型确实是强大的,并且是一个复杂的应用,即。 一个在线拍卖系统,可以设计和实现非常优雅的方式。
导言
现代应用程序必须满足越来越多的要求。 为了满足用户的期望,应用程序提供了越来越多的功能,因此变得越来越复杂。 用户界面、多媒体功能或与实时设备的交互,例如。 传感器,要求软件及时响应外部刺激,并能够同时执行几个操作。 还越来越需要集成不同的系统和应用程序,这导致了异质和可能的分布式系统。 此外,互联网的日益普及和电子商务领域的不断扩大导致了正在运行的分布式系统数量的爆炸性增长。 这些系统通常需要提供高度可用的服务,并且必须同时满足数百个客户端。
满足日益增长的软件需求的一种方法是改进软件开发方法[1,2,3],而另一种方法是提供更多的软件
强大的实现基础设施。 在我们的工作中,我们侧重于后一种方法。
并发系统可以分为协作系统,其中单个组件协作、共享结果和为共同目标工作,以及竞争系统,其中单个组件不知道彼此并竞争共享资源[4]。
许多研究人员认为所有面向对象的系统都是天生并发的,因为对象本身就是“natu-集合并发”实体。 在现实中,并发为系统结构和设计增加了一个新的维度。 并发系统极难理解、设计、分析和修改..
复杂的面向对象系统往往需要比当前编程语言提供的更先进和更精细的并发特性。 多个对象通常必须联合访问或更新以正确地反映现实世界,因此必须非常小心地保持相关对象的全局一致。 任何对对象的更新的交织,或更新和访问的交织,都可能破坏对象系统的整体一致性。 交易[5]解决这类问题..
本文是[6]的后续论文,其中我们详细介绍了开放式多线程事务模型.. 在这里,我们描述了一个在线拍卖系统的设计和实现,一个具有合作和竞争并发的动态系统的例子,以及如何通过使用开放的多线程事务构造应用程序来解决上述问题。 第二节简要回顾了开放多线程转换模型,强调了事务对象的处理方式;第三节介绍了拍卖系统案例研究,第四节介绍了基于开放多线程事务的设计;第五节深入了解了应用程序的支持类型实现,第六节讨论了使用开放多线程事务的优点和在案例研究中吸取的经验教训,最后一节得出了一些结论。
打开多线程事务
开放的多线程事务模型[6,7]是一个事务模型,它提供了一个特性,不仅可以像在传输系统中一样控制和构造对对象的访问,而且还可以提供参与事务的线程。 该模型允许几个线程输入相同的传输,以执行联合活动。 它提供了一种灵活的方式来操作在事务中执行的线程,允许它们被分叉和终止,但它限制了它们的行为,以保证事务嵌套的正确性和事务之间的隔离。 轻量级和重量级并发在开放的多线程传输模型中以相同的方式处理,这意味着这里所谓的线程可能是在单台机器上或在分布式设置中执行的进程。
开放多线程事务的生命周期
任何线程都可以启动事务。 希望代表已经存在的事务工作的线程可以通过加入它来这样做。 为了加入,它必须(在运行时)学习或(静态地)知道它希望加入的事务的身份。 代表开放多线程事务的线程被称为参与者。 创建或加入事务的外部线程称为加入参与者;由其他参与者在事务中创建的线程称为派生参与者。
在开放的多线程事务中,线程可以访问一组事务对象。 虽然单个线程在开放的多线程事务中独立进化,但允许它们通过访问相同的Transac-传统对象与事务的其他线程协作。
所有参与者通过对交易结果进行投票来完成他们在交易中的工作。 可能的投票将被否决。 投票中止是通过引发外部异常来完成的(见下文)。 事务提交当且仅当所有参与者投票提交时。
一旦产生的参与者投票,它将立即终止。 加入的参与者不得离开交易,即。 他们被阻止,直到交易的结果被确定。 如果一个参与的线程在没有对其结果进行表决的情况下从事务中“消失”,则事务将被中止,因为此情况与错误相反。
异常和开放多线程事务
开放的多线程事务模型包含了适应嵌套transac的有纪律的异常处理
该模型区分了内部和外部的经验;后者也称为接口异常。 每个参与者的内部异常集包括在其执行期间可能发生的所有异常。 开放的多线程事务中有三个异常来源:
-
- 内部异常可以由参与者显式地提出。
- 在嵌套传输中引发的外部异常作为父事务中的内部异常引发。
- 事务参与者访问的事务对象可以引发一个异常,以表示违反跨操作对象状态一致性的情况。
所有这些情况都可能导致应用程序状态不一致。 如果参与者不处理这样的静坐,应用程序的正确行为就不能被警告。
因此,参与者必须为所有内部异常提供处理程序。 如果这样的处理程序不能处理这种情况,它可以发出外部异常的信号1.
如果事务的任何参与者发出外部异常信号,则事务将被中止,异常将传播到包含的上下文,异常事务_Abort将被发送到所有其他已连接的PAR-Ticants。 如果几个加入的参与者发出外部异常的信号,每个参与者都会将自己的异常传播到自己的上下文中。
事务对象
在开放的多线程事务模型中,partici-裤子通过对事务对象调用操作来执行它们的工作。 为了保证ACID属性,参与者进行的操作调用必须在两个级别上控制。 首先要关注的是保证在事务中对同时运行的其他事务所做的所有更新的隔离属性。 这可以通过现有的乐观或悲观的并发控制技术来实现。 第二个问题是数据的一致性。 为了确保正确的更新,由同一事务的参与者并发执行的数据访问操作必须在相互排除范围内执行。 这可以通过使用在现代并发语言中发现的监视器或类似技术来实现。
早期错误检测和应用状态的一致性对于现代应用具有重要意义.. 现有的跨操作系统主要依靠程序员来编写事务,使其保持一致性。 In
通过在当地处理异常情况来恢复。 如果本地处理失败,事务支持应用反向错误恢复并将系统反转到其“初始”状态。
1. 如果参与者“忘记”处理内部异常,则会发出外部异常Transaction_Abort的信号,并通过中止事务来恢复应用程序的一致性。
开放的多线程事务模型,事务对象的开发人员可以通过开发所谓的自我检查封装不变量的事务对象来帮助应用程序程序员编写保持一致性的代码。 对于这些对象,方法用前置和后置条件进行修饰。 当方法的执行违反了不变量、前条件或后条件时,异常将传播给调用该操作的参与者。1 然后,参与者必须处理这个内部异常,以解决潜在的不一致。 如果处理失败,事务将被中止,代表事务对事务对象所做的所有更改将被取消,外部异常将传播到调用上下文。
对象创建和删除
存储在事务对象中的大多数数据都是持久性的,
i. 当应用程序终止时,它仍然存在。 应用程序可能希望创建新对象,但也希望使用以前运行期间创建的对象。 这就是为什么这些对象必须提供三个内务操作:创建、还原和删除。
在某些存储上创建物理创建对象
单元,而还原尝试从存储单元读取先前存储的状态。 删除删除存储在该单元上的数据。
为了在崩溃失败的前提下提供原子性和持久性,事务支持必须能够重做已提交的事务的意外丢失的操作,或者撤消部分执行的事务的影响。
事务的影响包括所有访问的事务对象的状态变化集,但也可能包括事务对象的创建和删除。 如果创建新对象的事务中止,则必须删除这些对象,同样,如果对象已被删除,则必须重新创建它们。 事务支持必须预先监视对事务对象进行的所有创建和删除操作,并记录它们,以及用于删除操作的对象的状态信息。 只有这样,事务支持才能在事务中止时逆转创建或删除操作。
案例研究说明
本节中对预先发送的拍卖系统的非正式描述是受拍卖服务的启发
1. 有相当多的研究涉及到设计对象/类,以及开发它们的前、后条件和不变量,以及开发运行时要检查的可执行条件。 最著名的例子是B.Meyer的“按合同设计”方法,该方法得到了埃菲尔铁的支持[8]。
在[9]中提出的例子,这反过来是基于在各种互联网网站上发现的拍卖系统,例如。 www.ebay.com, www.ubid.com 或 www.ibazar.com。
一般要求
拍卖系统运行在一组通过网络连接的计算机上。 客户从其中一台计算机访问拍卖系统。
该系统允许客户通过拍卖方式买卖物品。 不同类型的拍卖被移植,即英国拍卖、荷兰拍卖、第一价格拍卖、第二价格拍卖等。
英国拍卖是最著名的拍卖形式.. 出售的商品从一个相对较低的最低价格开始拍卖. 然后,允许投标人出价,直到拍卖结束。 有时,拍卖的期限是预先确定的,例如。 30天,或者,每次新出价重置一个超时值可以与拍卖联系起来。
在荷兰拍卖中,起拍价被设定为高价。 然后,按照预定义的间隔,例如。 每天一次,这个价格降低了一定的数量。 第一个投标者赢得了拍卖。
在第一次价格拍卖期间,所有投标人都进行了一次秘密出价。 当拍卖在规定的时间后结束时,出价最高的投标人将赢得拍卖。 第二次价格拍卖是基于同样的原则。 然而,胜利者,即。 出价最高的投标人,必须只支付下一个最佳出价的金额。
登记
任何有兴趣使用拍卖系统的客户必须首先向系统注册,填写一份登记表,他或她必须提供他或她的真实姓名、邮政地址和电子邮件地址,以及所需的用户名和密码。
此外,所有注册用户必须在注册时向拍卖系统存入一定数额的资金或其他担保。 款转入拍卖系统控制的银行账户.. 在投标货物时,客户提出的投标金额不得超过其帐户上的可用资金。
一旦注册过程完成,客户就成为拍卖系统的成员。
Login
想要使用系统的拍卖服务的成员必须首先使用他或她的用户名和密码登录到系统。 一旦登录,该成员可以从下列可能性中选择一种:
-
- 开始新的拍卖,
- 浏览当前的拍卖,
- 参加正在进行的拍卖,
- 查阅其他成员的历史,或
- 从他或她的帐户存款或取款。
开始拍卖
想要开始新的拍卖的成员必须填写一份物品表格,描述要拍卖的物品。 所需信息包括标题、成员要出售的项目的详细说明和开标。 此外,要使用的拍卖类型必须是特定的。
一旦项目表单成功提交,系统就启动拍卖并将其插入到Cur-租金拍卖列表中。
浏览本届拍卖会名单
任何登录到拍卖系统的成员都可以浏览当前拍卖的列表。 当前拍卖列表中可用的信息是拍卖的标题、拍卖类型、待出售物品的描述、到期日期以及与特定类型拍卖相关的其他数据。
参与及竞投竞投
在浏览当前拍卖的列表时,成员可以决定参与其中的一个或几个。 要投标一个项目,参与者只需输入投标金额。有效投标必须符合下列要求:
-
-
想出价
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[254210],资料为PDF文档或Word文档,PDF文档可免费转换为Word
-
想出价
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。