查询处理的目标是按照分布式上下文将基于分布式数据库的高级查询转换成采用低级语言表达的、更有效的、基于局部数据库的执行策略。响应时间是执行查询获得响应所经历的时间。集中式数据库系统中,总开销主要由CPU开销和I/O开销构成。CPU开销是指数据在内存时发生的计算开销。通信开销则是参与执行查询的节点间交换数据所需的开销。大部分早期的分布式查询处理的建议方案都强调通信开销远大于本地开销,因此可以忽略本地开销。......
2025-09-30
按照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软件的环境下(例如网络计算机)。客户层不需要完成任何重要的业务逻辑,也不需要以任何方式直接与数据库交互,同时也不保存任何本地的状态信息,它只提供与用户交互的功能,提供一个良好的人机界面。这样就保证了系统中的客户机是一个真正的“瘦”客户机。(https://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服务层,整个系统的主要管理工作集中在应用服务层。业务逻辑的修改对客户层没有影响。
●安全性高。
应用服务层上的安全服务作为一个公用服务被所有应用调用,不必为每一个应用编写安全服务。整个系统的安全数据的工作只能由安全服务来访问,各个客户机无法直接访问到数据库,这大大提高了系统的安全性。
●可重用性好。
整个系统由许多服务组成,每个服务可以被不同的应用重用。构建系统时采用了面向对象的组件模式,每个服务又由许多可重用的组件构成,进一步增加了系统的可重用性。
相关文章
查询处理的目标是按照分布式上下文将基于分布式数据库的高级查询转换成采用低级语言表达的、更有效的、基于局部数据库的执行策略。响应时间是执行查询获得响应所经历的时间。集中式数据库系统中,总开销主要由CPU开销和I/O开销构成。CPU开销是指数据在内存时发生的计算开销。通信开销则是参与执行查询的节点间交换数据所需的开销。大部分早期的分布式查询处理的建议方案都强调通信开销远大于本地开销,因此可以忽略本地开销。......
2025-09-30
“告警直传”是以变电站 SCADA 的单一事件或综合分析结果为信息源,经过规范化处理,生成标准的告警条文。告警信息筛选以监控业务需求为依据,以相关告警分类为标准,注重信息的完整性与传输的可靠性。1.告警直传技术方案变电站告警直传方案由两种方式实现。2.告警格式直传告警信息参考 syslog 格式,告警直传功能模块标准的告警条文按照“级别、 时间、设备、事件、原因”五段式进行描述,各段之间用空格分隔。......
2025-09-29
◇内置打印服务器实现网络打印目前,最先进的网络打印技术是打印机本身带一个网卡,用户直接将网络线与打印机的网卡相连,即可实现网络打印。要实现这一功能,必须要构建好打印环境,包括打印队列、打印服务器、打印机。◇外置打印服务器+任何标准并口打印机+网络打印管理软件,这种模式是最经济的模式。......
2025-09-30
数据库在建立、运行和维护时,由数据库管理系统统一管理和统一控制。数据库管理系统可以使用户方便地定义数据和操纵数据,并能够保证数据的安全性和完整性、多用户对数据的并发使用及发生故障后的系统恢复。完整性规则是给定的数据及其联系所具有的制约和存储规则,用以限定符合数据库状态及状态的变化,以保证数据的正确性、有效性和相容性。同时,程序与现有存取结构的联系过于密切,也大大降低了数据的独立性。......
2025-09-30
比如,在页岩气超过3 500m深核心勘探开发技术和装备尚未突破的现状下,为实现技术突破,政府可采取以下政策。将一些区块划出,作为页岩气开发特区,以优惠的条件对外招标,进行开采,在开发中学习对方的技术。上述建议涉及国家的财政政策、外商直接投资政策、对外开放的特区政策、科技政策、国际教育合作政策以及出国留学政策对页岩气发展战略的具体支持。......
2025-09-29
事务和事务管理是数据库系统中的两个重要概念。图8.1事务模型图8.1中,事务T将数据库从一致状态转换成另一个一致状态,事务执行期间,数据库可能临时处于不一致状态。事务管理就是这样一种机制,它负责让数据库始终保持一个一致状态,即便是并发存取或发生故障。例8.1中有一个假设,即事务总是会按目的终止。如果事务成功完成,我们称为事务提交。事务夭折的原因多种多样。......
2025-09-30
当待校正系统不稳定,且要求校正后系统的响应速度、相角裕量和稳态精度较高时,采用滞后—超前校正为宜。其基本原理是利用滞后超前网络的超前部分来改善系统的相角裕量,同时利用滞后部分来改善系统的稳态性质。下面举例说明使用Matlab进行滞后—超前校正的设计步骤。运行程序,可以得到超前装置、滞后校正装置和校正后系统的传递函数分别如下:校正后的相角裕量为48.1°,幅值裕度为10.2dB,校正后的Bode图如图6-25所示。图6-25校正后系统的Bode图......
2025-09-29
例如,可以按照各种方式将事务进行分类。也可以将事务分为在线处理事务和批处理事务。图8.3各种事务模型 下面看一些事务的例子。按事务结构可分为平面事务和嵌套事务。子事务的提交是父事务提交的条件。......
2025-09-30
相关推荐