分布式编程情势中的租约、事件和分布式事件机制[Java编程]
本文“分布式编程情势中的租约、事件和分布式事件机制[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Jini技术面向网络及分布式计算的特点决意了Jini技术必定与传统的单机系统在很多方面有概念上和实际利用中的差别.如网络的耽误、失利,大概设备的忽然撤出,将招致信息的无序和丧失;资源的得到、保存、保护和回收情形更为复杂;差别实体之间通讯和调和工作的坚固性及效率并不像单机系统中那样较为简单地得到保证.因而在 Jini 中以 Java 为底子加入了分布式编程情势,分外是引入了租约、分布式事件和分布式事件.
租约
租约的基本概念是资源只能被利用一段时间,这由租约的持有者(lease holder)和租约的受权者(lease grantor)协商决意.
租约接口的目标是为分布式系统和利用程序供应一种分外的编程气势.这种编程气势是当某对象初次对该资源拜候时,由这两个对象先协商,最后受权对资源举行某段时间的利用.
在非分布式系统中,资源或服务将被受权直到被明确释放或放弃,这种编程情势在分布式系统中注定要失利,缘由是不能保证放弃对资源或系统的利用是必定成功的,这将招致系统的这部份资源永久不会被释放.
为避免此类问题而引入了租约的概念.在租约中被租用的资源或服务的受权是基于时间的.一旦租借时间期满,服务就将完毕,资源将被释放.租约的期限在第一次受权时决意,由租约的受权者和接纳者采取request/response方法协商.租约可以在期满前续约或撤消.期满时,双方认为服务或资源已回收.
租约概念的引入也可以用于办理分布式系统面对的另一个问题.持续开机的分布式系统趋向于堆集过期和不必要的信息,办理这种问题的通例办法是把清理无用资源作为一项系统管理员的任务.但是,当这种资源被租用时,就不会发生过期信息的堆集,也不再需求以手工办法排除.租用的信息或资源仅在租约续约时才保存在系统中.因此被忘记的信息经过有限时间后将被删除.
Jini系统中定义了一组接口以及相关的约定和协议,目的是使差别Java虚拟机通过协商产生各种资源的利用租约.可形成租约的协议有多种,可以分为对某个对象的拜候(引用)协议、对将来采纳行动(事件告诉)的协议和供应长期储存的协议等.租约机制要和并发机制相结合,即某资源可以有多个并发的租约持有者.
租约的特点包含:受权者确保持有者能在一段时间内对资源举行拜候;在租约期限内,租约持有者可以撤消租约,受权者将排除相关的资源;持有者可以要求续约,续约期限由双方协商决意;若租约到期,受权者将释放相关资源,与撤消租约的差别之处在于,受权者与持有者之间不需求通讯.
事件
事件式的行为在分布式计算中特别重要,它供应了使一个或多个远程参与者对一系列操作的后果保持一致的办法.Jini系统将实现事件语义交由事件中的个体对象处理.系统首先要供应的是对象之间确认事件时用来交换信息的合作机制,目标是供应最小的协议和接口的调集,用以让对象实现事件语义.
Jini描写的完成协议由分布式系统的两阶段提交协议构成.两阶段提交协议定义了分布式对象资源的通讯情势,这个协议需求一个管理者来保证操作集抉择的一致性,即保证全部的参与者终究知道它们是应提交操作还是放弃操作.
事件由一个管理者成立和监督,每个事件由一个标识来代表,它关于事件的管理者是唯一的.客户通过一个对管理者的恳求来成立事件,普通利用语义工厂类,如Transactionfactory来成立一个语义对象.在对一个服务实施操作时,这个语义对象就将作为一个参数传送.假如服务赞成承受这个事件并管理它的操作,它必须作为一个参与者加入到这个事件中去.
假如一个事件成功提交,那么全部在事件之下举行的操作都将完成.放弃事件意味着全部在事件之下举行的操作都好像完好没有发生过一样.提交事件需求每个参与者“表决”,表决可挑选“就绪”(预备提交)、“未改变”(只读),大概“放弃”(事件应被放弃).
两阶段提交协议的计划目标是使对象可以供应ACID属性.缺省的事件语义定义了保存这些属性的一个办法.ACID属性是:
·Atomicity(原子化):全部在一个事件下的操作全部发生大概一个也不发生.
·Consistency(一致性):事件的完成必须使系统保持在一致的状况.事件只是一个使保证一致性成为大概的工具,而它本身并非一致性的保证者.
·Isolation(断绝性):正在履行的事件不该彼此影响.一个事件的参与者应当只能看到自己事件中操作的中间状况,而不是别的事件的中间状况.
·Durability(耐用性):事件提交的后果应像事件提交的对象实体一样长期,但这个保证只能由对象来完成.
依靠于参与者来实现ACID属性是两阶段提交协议与传统事件处理系统的最大差别之处.两阶段提交协议的定义利用了三个主要范例:
·Transactionmanager——事件管理者成立新的事件并调和参与者的行动.
·NestableTransactionManager——一些事件管理者可以支持嵌套的事件.
·TransactionParticipant——当操作是在一个事件之下举行的,参与者必须加入事件,给管理者供应一个对 TransactonParticipant对象的引用,以便用来表决.
以上是“分布式编程情势中的租约、事件和分布式事件机制[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |