与Napster一样,Gnutella也是一个音乐共享系统,但其实现方式有所不同。Gnutella是一个纯无中心P2P系统,主要功能是文件共享。Gnutella系统具有如下特点。一方面,每个查询会广播到尽可能多的节点,Gnutella有能力得到所有潜在结果。......
2023-10-28
按照Sun Microsystems公司[4]对JavaTM的界定,Java是一个应用程序开发平台,它提供了可移植性、可解释性、高性能和面向对象的编程语言及运行环境。RMI(remote method invocation,远程方法调用)是分布在网络中的在各类Java对象之间进行方法调用的ORB机制。RMI也是程序员使用Java编程和开发环境的一种编程方法,它可以使程序员面向对象编程,结果的对象可以运行在网络的不同计算机上,它们之间可以互相交互。可以把RMI看成是远程过程调用(RPC)的Java版本,RMI能够按照请求传递对象。对象可以包括各种信息,诸如施加在远程计算机上的服务是如何改变的,改变了哪些等。Sun Microsystems公司将之称为移动行为(moving behavior)。
RMI按以下三个层次实现。
●Client/Server关系中客户端的一个桩程序(stub program),一个在服务器端的梗概(skeleton)(Sun Microsystems公司使用Proxy这个词作为stub的同义词)。
●远程参考层(remote reference layer)取决于调用它的不同参数。例如,该层可以决定请求时是调用一个单一的远程服务,还是多点广播中的多点远程程序。
●RMI是作为Sun Microsystems公司的Java Development Kit(JDK)一部分提供的。
CORBA技术与Java技术存在天然的联系,Sun Microsystems公司是OMG的创始成员,CORBA标准中的许多内容(如IDL标准、IIOP标准)是以Sun Microsystems公司提交的方案为核心而制定的。
CORBA与Java/RMI的主要区别在于以下两个方面。
●程序设计语言无关性是CORBA的重要设计原则,而Java/RMI依赖于Java语言与Java虚拟机(JVM)。
●Java/RMI技术的最大成就是使对象能够在Internet上迁移和执行,而CORBA 2.0标准中只考虑对象的远程访问,并没有将对象作为“值”传递的承诺。
Java是为了满足异构化、网络化分布式环境对应用开发的挑战而设计的。它面对的重要挑战是:如何消耗最少的系统资源运行在不同的软/硬件平台上,同时又可以动态扩展。
Java起因于一个研究计划,目的是开发适合各种网络设备和嵌入式系统的先进软件。其目标是开发一个小型、可靠、便携、分布、实时的操作系统。结果提出了一种成功的分布式、基于网络的、适用于广泛范围(从基于网络的嵌入式设备到World Wide Web和桌面)的计算机语言。
Sun Microsystems公司提出了一个基于Java平台的多层应用软件的体系结构。在这种体系结构中,各种应用是一组能够被共享的服务的集合,并且各种服务是跨应用的,不同的服务分别在不同的层次中实现。
Sun Microsystems公司最初提出的三层结构如图12.11所示。
图12.11 Sun Microsystems公司提出的三层结构
在三层结构中,第一层是客户层,提供用户接口的功能;第二层是服务器层,提供完成所有业务逻辑和数据库存取的功能;第三层是数据库层,提供数据持续存储的功能。
客户层的运行环境主要是Web浏览器,运行的程序是客户端的Java Applet程序。服务器层主要由两部分组成:一部分是Web服务器,它通过HTTP协议向客户层提供Java Applet程序;另一部分是应用服务器,它包含完成业务逻辑所需要的各种服务,一方面通过远程方法调用(RMI)与运行在客户层的Java Applet程序通信,另一方面通过JDBC来访问存储在数据库中的数据。数据库层往往采用某种大型的关系数据库系统,以满足大量数据的存储要求。
最初提出的三层结构中存在两个问题:Java Applet程序的下载时间长和网络资源访问安全性受到Java限制。
常见的企业级网络应用架构通常是这样的:由分布在各地机构中的一组计算机组成一个局域网,各局域网又组成一个广域网,数据分布存储在各地。在最初的三层体系结构中,客户端所需的Java Applet程序是在运行时从服务器层的某台服务器上下载。但在复杂的广域网环境下,由于带宽和流量的不同,常使得下载时间可能从秒级升到分钟级,甚至更长。这就需要一种机制来缓存各局域网中客户端经常使用的JavaApplet程序和静态数据,从而减少下载时间和网络流量。
在最初的三层体系结构中,客户端的Java Applet程序如果要访问某台计算机上的文件,就只能通过中间层,即文件只有先从存储它的计算机传送到中间层,然后传送到这个客户端,从而导致在广域网上产生大量的数据传输。同样,客户端的Java Applet程序无法访问打印机资源,即无法在程序中自由地控制打印,只能利用Web浏览器的打印功能,这对于复杂的应用是远远不够的。
为了进一步提高系统的效率,建立一个真正的由跨应用和客户可重用的服务组成的多层应用软件体系结构,Sun公司提出了如图12.12所示的多层应用软件结构。
图12.12 多层应用软件结构
由图12.12可见,整个系统由四层组成,分别是客户层(client tier)、顶端Web服务层(Web top server tier)、应用服务层(application server tier)和数据库层(database tier)。
1.客户层
客户层通常向用户提供应用接口,一个图形用户界面。在这一层运行JavaApplet程序,这些程序既可以运行在Web浏览器环境下,也可以运行在任何Java软件的环境下(例如网络计算机)。客户层不需要完成任何重要的业务逻辑,也不需要以任何方式直接与数据库交互,同时也不保存任何本地的状态信息,它只提供与用户交互的功能,提供一个良好的人机界面。这样就保证了系统中的客户机是一个真正的“瘦”客户机。(www.chuimin.cn)
2.顶端Web服务层
顶端Web服务层主要起代理和缓存的作用。
一台顶端Web服务器,用缓存来存储应用需要的Java Applet程序和静态数据,提供访问本地资源(如用户文件和打印机)的能力,起到JavaApplet主机访问其他服务的代理作用。
顶端Web服务层主要包括代理服务器、服务定位Servlet(service locator Servlet)、本地服务(local service)和代理Servlet(proxy Servlet)这几部分。
代理服务器的作用是缓存本地各客户机经常使用的JavaApplet程序和静态数据,与普通代理服务器的作用相同。服务定位Servlet的功能是根据客户机发送来的请求寻找适当的服务,从而完成对客户机需要的数据和网络资源的存取。本地服务主要包括文件存取、打印、登录、配置和会话等,这些服务是根据各客户机的请求来完成对本地资源的访问。例如,一个客户机需要使用本地的打印机,它向服务定位Servlet发出请求,并从服务定位Servlet得到一个访问打印服务的句柄,然后就可以使用这个“句柄”来访问打印服务,完成其打印任务。代理Servlet的功能是访问远端数据。如果客户机需要访问远端数据,那么它向服务定位Servlet发出请求,并从服务定位Servlet获得一个访问“句柄”,从而通过代理Servlet访问远端数据。
在这一层中,代理服务器完全由Java语言编写而成。服务定位Servlet、本地服务和代理Servlet都是由Servlet技术实现的。
3.应用服务层
应用服务层是多层应用软件结构中最重要的一层,它提供所有的业务逻辑处理功能。整个系统中,所有对数据库的操作都在这一层中完成。应用服务层包括完成业务逻辑处理所需要的各种服务,这些服务以API的方式提供,客户端通过调用这些API来完成对数据库的操作。例如,认证服务(authentication service)通过访问企业的认证数据库来验证用户口令是否正确。
对于每一种应用服务,都有一个代理Servlet相对应,它自动地从应用服务层下载到顶端Web服务层。当某个客户端请求某种服务时,顶端Web服务层的服务定位Servlet会传给它对应这种服务的一个“句柄”。客户端利用这个“句柄”向一个代理Servlet发送请求,这个代理Servlet将这个请求发送到应用服务层,再由应用服务层中的某个服务完成对这个请求的响应。
4.数据库层
最后一层是数据库层,它的功能是存储应用中的数据。它一般采用关系数据库或面向对象数据库。数据库层和应用服务层共同完成业务规则、验证和持续存储的任务。应用服务层与数据库层之间通过JDBC[5]的接口采用SQL语言进行交互。
Sun公司提出的多层应用软件结构中,各层之间的通信方式是比较复杂的。客户层与顶端Web服务层之间使用的协议有HTTP和RMI两种。客户层通过使用HTTP协议将存储在顶端Web服务层的Java Applet程序下载到本地运行。客户层还可以使用HTTP协议调用顶端Web服务层的服务定位Servlet,服务定位Servlet返回一个RMI对象索引。客户层利用这个索引与代理Servlet通信,这时使用的协议是RMI,从而获得所需的数据或服务。
顶端Web服务层与应用服务层之间使用的协议是HTTP和RMI两种。顶端Web服务层使用HTTP协议从应用服务层下载Java Applet程序和Java Servlet程序。当顶端Web服务层通过RMI获得客户层的请求时,同样使用RMI与应用服务层中的某种服务通信转发请求,并在获得应用服务层发送的结果后再转发给客户层。
多层应用软件结构具有以下几个优点。
●可伸缩性好。
由于系统的业务逻辑处理完全在应用服务层完成,因此所有客户端不直接与数据库连接,应用服务层通过数据库连接池与数据库连接,系统可以根据客户端请求的多少来动态调整池中的连接数,使系统消耗较少的资源来完成客户端的请求。
●网络效率高。
由于使用顶端Web服务层,因此,通过广域网大大减少了传输的数据流量,提高了网络效率。
●可管理性强。
系统的客户层基本实现了“零管理”,局域网内的主要管理工作集中在顶端Web服务层,整个系统的主要管理工作集中在应用服务层。业务逻辑的修改对客户层没有影响。
●安全性高。
应用服务层上的安全服务作为一个公用服务被所有应用调用,不必为每一个应用编写安全服务。整个系统的安全数据的工作只能由安全服务来访问,各个客户机无法直接访问到数据库,这大大提高了系统的安全性。
●可重用性好。
整个系统由许多服务组成,每个服务可以被不同的应用重用。构建系统时采用了面向对象的组件模式,每个服务又由许多可重用的组件构成,进一步增加了系统的可重用性。
有关分布式数据库技术的文章
与Napster一样,Gnutella也是一个音乐共享系统,但其实现方式有所不同。Gnutella是一个纯无中心P2P系统,主要功能是文件共享。Gnutella系统具有如下特点。一方面,每个查询会广播到尽可能多的节点,Gnutella有能力得到所有潜在结果。......
2023-10-28
关于如何利用中间件集成多数据库,下面举一个使用CORBA集成的例子。参考文献[1]中提出的基于CORBA的多数据库系统体系结构,称为CBMA。CBMA是典型的多数据库系统体系结构,加入CBMA的数据库仍具有自治性,其上原来的应用程序仍能继续运行。MOTM由CORBA的ORB、多数据库系统事务管理器、负载平衡和安全管理等功能模块组成,其中多数据库系统事务管理器、负载平衡和安全管理都是作为ORB的软构件实现的。......
2023-10-28
ERP数据库是一个基于企业管理的数据库,很多聚焦数据库设计的数据库系统书籍都会将企业数据库作为样例来介绍。一般ERP数据库是一个集成的统一数据库。BOM不仅是MRPⅡ/ERP系统中重要的输入数据,而且是财务部门核算成本、制造部门组织生产等业务的重要依据。因此,BOM是ERP系统运行的依据,ERP系统实施的广度和深度取决于BOM的覆盖面和数据内容。......
2023-10-28
查询处理的目标是按照分布式上下文将基于分布式数据库的高级查询转换成采用低级语言表达的、更有效的、基于局部数据库的执行策略。响应时间是执行查询获得响应所经历的时间。集中式数据库系统中,总开销主要由CPU开销和I/O开销构成。CPU开销是指数据在内存时发生的计算开销。通信开销则是参与执行查询的节点间交换数据所需的开销。大部分早期的分布式查询处理的建议方案都强调通信开销远大于本地开销,因此可以忽略本地开销。......
2023-10-28
基于法定人数选举法可以作为一个副本控制方法,也可作为提交方法在网络分割时保证事务的原子性。事务提交前,必须获得提交法定选举人数Vc的通过。后两条规则说明选举的两条规则。在协调者从PRECOMMIT状态移到COMMIT状态和发送″global-commit″命令时,协调者必须获得提交选举人数参与者的同意,这是为了满足规则。图10.193PC协议在选举人方案中的状态转换基于选举人提交算法,有两点是很重要的。......
2023-10-28
显然,自动识别技术是物联网体系的重要组成部分,借此可以对每个物品进行标识和识别,并可以实时更新数据,是构造全球物品信息实时共享的重要组成部分,是物联网的基石。按照国际自动识别技术的分类标准,自动识别技术可以分为数据采集技术和特征提取技术两大类。......
2023-10-28
◇内置打印服务器实现网络打印目前,最先进的网络打印技术是打印机本身带一个网卡,用户直接将网络线与打印机的网卡相连,即可实现网络打印。要实现这一功能,必须要构建好打印环境,包括打印队列、打印服务器、打印机。◇外置打印服务器+任何标准并口打印机+网络打印管理软件,这种模式是最经济的模式。......
2023-10-19
相关推荐