了解下JAVA的散布式编程形式中的租约、事件和散布式事务机制
在1995年5月23日以“Java”的名称正式发布了。Jini手艺面向收集及散布式盘算的特征决意了Jini手艺一定与传统的单机体系在很多方面有观点上和实践使用中的不同。如收集的提早、失利,大概设备的俄然撤出,将招致信息的无序和丧失;资本的取得、保留、保护和接纳情形更加庞大;分歧实体之间通信和和谐事情的牢靠性及效力其实不像单机体系中那样较为简单地取得包管。因此在Jini中以Java为基本到场了散布式编程形式,出格是引进了租约、散布式事件和散布式事务。
租约
租约的基础观点是资本只能被利用一段工夫,这由租约的持有者(leaseholder)和租约的受权者(leasegrantor)协商决意。
租约接口的方针是为散布式体系和使用程序供应一种出格的编程作风。这类编程作风是当某对象初次对该资本会见时,由这两个对象先协商,最初受权对资本举行某段工夫的利用。
在非散布式体系中,资本或服务将被受权直到被明白开释或保持,这类编程形式在散布式体系中必定要失利,缘故原由是不克不及包管保持对资本或体系的利用是一定乐成的,这将招致体系的这部分资本永久不会被开释。
为制止此类成绩而引进了租约的观点。在租约中被租用的资本或服务的受权是基于工夫的。一旦租借工夫期满,服务就将停止,资本将被开释。租约的刻日在第一次受权时决意,由租约的受权者和吸收者接纳request/response体例协商。租约能够在期满前续约或作废。期满时,两边以为服务或资本已接纳。
租约观点的引进也能够用于办理散布式体系面对的另外一个成绩。一连开机的散布式体系趋势于堆集过期和不用要的信息,办理这类成绩的惯例办法是把清算无用资本作为一项体系办理员的义务。但是,当这类资本被租用时,就不会产生过期信息的堆集,也不再必要以手工办法扫除。租用的信息或资本仅在租约续约时才保留在体系中。因而被忘记的信息经由无限工夫后将被删除。
Jini体系中界说了一组接口和相干的商定和协定,目标是使分歧Java假造机经由过程协商发生各类资本的利用租约。可构成租约的协定有多种,能够分为对某个对象的会见(援用)协定、对将来接纳举动(事务关照)的协定和供应久长贮存的协定等。租约机制要和并发机制相分离,即某资本能够有多个并发的租约持有者。
租约的特征包含:受权者确坚持有者能在一段工夫内对资本举行会见;在租约刻日内,租约持有者能够作废租约,受权者将扫除相干的资本;持有者能够请求续约,续约刻日由两边协商决意;若租约到期,受权者将开释相干资本,与作废租约的分歧的地方在于,受权者与持有者之间不必要通信。
事件
事件式的举动在散布式盘算中特别主要,它供应了使一个或多个远程列入者对一系列操纵的了局坚持分歧的办法。Jini体系将完成事件语义交由事件中的个别对象处置。体系起首要供应的是对象之间确认事件时用来互换信息的互助机制,方针是供应最小的协定和接口的汇合,用以让对象完成事件语义。
Jini形貌的完成协定由散布式体系的两阶段提交协定构成。两阶段提交协定界说了散布式对象资本的通信形式,这个协定必要一个办理者来包管操纵集决定的分歧性,即包管一切的列入者终极晓得它们是应提交操纵仍是保持操纵。
事件由一个办理者创立和监视,每一个事件由一个标识来代表,它关于事件的办理者是独一的。客户经由过程一个对办理者的哀求来创立事件,一般利用语义工场类,如Transactionfactory来创立一个语义对象。在对一个服务虚行操纵时,这个语义对象就将作为一个参数传送。假如服务批准承受这个事件并办理它的操纵,它必需作为一个列入者到场到这个事件中往。
假如一个事件乐成提交,那末一切在事件之下举行的操纵都将完成。保持事件意味着一切在事件之下举行的操纵都好像完整没有产生过一样。提交事件必要每一个列入者“表决”,表决可选择“停当”(筹办提交)、“未改动”(只读),大概“保持”(事件应被保持)。
两阶段提交协定的计划方针是使对象可以供应ACID属性。缺省的事件语义界说了保存这些属性的一个办法。ACID属性是:
·Atomicity(原子化):一切在一个事件下的操纵全体产生大概一个也不产生。
·Consistency(分歧性):事件的完成必需使体系坚持在分歧的形态。事件只是一个使包管分歧性成为大概的工具,而它自己并非分歧性的包管者。
·Isolation(断绝性):正在实行的事件不该相互影响。一个事件的列入者应当只能看到本人事件中操纵的两头形态,而不是别的事件的两头形态。
·Durability(耐用性):事件提交的了局应像事件提交的对象实体一样耐久,但这个包管只能由对象来完成。
依附于列入者来完成ACID属性是两阶段提交协定与传统事件处置体系的最年夜分歧的地方。两阶段提交协定的界说利用了三个次要范例:
·Transactionmanager——事件办理者创立新的事件并和谐列入者的举措。
·NestableTransactionManager——一些事件办理者可以撑持嵌套的事件。
·TransactionParticipant——当操纵是在一个事件之下举行的,列入者必需到场事件,给办理者供应一个对TransactonParticipant对象的援用,以便用来表决。
<p>
诸如RMI,EJB等一些技术并不是你说的那么复杂,而是它们把一些复杂的工具封装成不复杂的工具了,理解这些工具是需要些时间。我问你,.net网页编程里有这些工具吗?要简单多少?。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 是一种语言,用以产生「小应用程序(Applet(s)) 是一种突破用户端机器环境和CPU 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
页:
[1]