批处理:高效灵活的客户机/服务器交互的设计模式外文翻译资料

 2022-08-04 21:32:47

英语原文共 15 页,剩余内容已隐藏,支付完成后下载完整资料


摘要

诸如收集/分散输入/输出、下载系统扩展的代码、消息批处理、移动代理和延迟调用断开连接操作等知名技术有哪些共同之处?尽管技术相当不同,但它们都共享一个共同的设计(可能还有实现)作为它们的基石:批处理设计模式。

上面提到的所有技术都是为跨多个域(例如,网络中的多个进程或多个节点)运行的应用程序而设计的。在这些技术中,多个操作捆绑在一起,然后发送到不同的域,在那里执行它们。在某些情况下,目标是减少域跨越的次数。在其他情况下,它允许动态服务器扩展。

在本文中,我们介绍了批处理模式,讨论了应该和不应该使用该模式的情况,并确定了实例化该模式的8类现有技术。

1介绍

诸如代码下载、消息批处理、收集/分散和移动代理等应用程序都遵循客户机-服务器交互模型。仔细观察就会发现,它们都将一组操作分组,并将它们提交给服务器执行。提交操作的目的是减少域交叉和/或允许动态服务器扩展。例如,代码下载到操作系统内核是

部分由西班牙CICYT grant # TIC-98-1032-C03-03支持。

dagger; 部分由西班牙研究委员会CICYT资助项目# TIC-98-1032-C03-01和马德里地区研究委员会资助项目CAM-07T/0012/1998提供。

bdfa法比奥Kon部分由CAPES, Brazil, proc.# 1405/95-2支持。

sect; 系统研究小组由国家科学基金会(NSF 98- 70736)资助。

1

旨在节省域穿越,同时允许系统扩展。消息批处理和移动代理的目的是避免跨域。

考虑一个使用如图1所示文件服务器的程序。在典型的客户机-服务器交互中,客户机向服务器发送命令(读、写),等待应答,然后继续。

cat(File aFile, File otherFile) { while (aFile.read(buf))

write(otherFile.write(buf)); }

图1:Cat代码

假设读和写是由同一个服务器处理的,并且跨域调用(即从客户机到服务器的调用)比在服务器内部进行的调用要重得多。然后,将整个while循环发送到文件服务器执行会更加有效。

如果客户机将代码发送到服务器执行,那么一个调用就足够了,而不是有多个跨域调用(图2.a)(图2.b)。为此,扩展文件服务器以允许执行不同客户端提交的程序是很方便的。

read(f1,buf) ack(buf) write(f2,buf) ack()

hellip;write(f2, buf) ack ()

execute (cat (f1、f2))

ack ()

(a) (b)

图2:对应于读写服务和cat服务的交互

2问题

跨域数据流量和跨域调用延迟都对多域应用程序的效率有显著影响。跨域调用和跨域数据传输也发生在集中式环境中。例如,几乎每个操作系统在用户空间和内核空间之间都有一个域边界(进入和离开内核都需要跨越域)。一个应用程序使用

2

多个进程的每两个进程之间都有一个域边界。此外,在分布式系统中,网络的行为就像一个域边界。

在许多情况下,不必要的数据传输只是因为控制操作的对象驻留在远离数据源和/或数据接收器的地方。这正是上一节文件复制示例中所发生的情况:执行复制的客户机对象和文件服务器对象位于不同的域中。因此,数据到达客户机只是为了返回到服务器。

3解决方案

通过批处理单独的方法调用,即将它们转换为单个的跨域调用,可以避免不必要的数据复制,并减少跨域调用的数量。

客户端可以构建一个程序(“批处理调用”)并立即将其传输到服务器。程序在该服务器上执行多个操作,即使客户机只需要发送一次。

在我们的示例中(参见图2,cat的交互),如果没有使用批处理,文件内容必须在网络上传输两次。然而,当cat程序提交给服务器时,文件不会离开服务器,而是在本地复制。

4模式结构

批处理,也称为复合调用。

4.1参与者

图3显示了与批处理模式对应的类层次结构。它遵循[5]中使用的OMT表示法[13]。

批处理服务器的行为作为一个fac ade[5]到服务器提供的服务该类的对象位于服务器端。它为服务调用者提供了解释工具,这样客户端就可以将程序发送到服务器端,而不是直接调用服务器。execute方法是解释器[5]的入口点,它解释“批处理”程序并将结果返回给客户端。

这个类只出现在服务器端。它提供了一组可以由客户机调用的入口点。

请注意,ConcreteServer实际上是在实例化模式之前在服务器端拥有的类(或类集)。这里提到它是为了完整性。

Program是一个抽象类,表示要解释的程序。客户端构建程序实例并将它们发送到批处理服务器以执行。它还负责维护一个相关的变量表。运行

3.

BatchServer execute(vars,aProgram)

ConcreteServer service1(parms) service2(parms)

Program run(vars) terminate() VarTable vars;

Var

get(bytes) Mode mode

ControlStructure

Command

run(vars) terminate()

run(vars) terminate()

ConcreteVar set(bytes) get(bytes)

ConcreteControlStructure ConcreteControlStructure(somePrograms) run(vars)

terminate()

// Assuming // itrsquo;s an IntVar memcpy(bytes, _the_int,sizeof(int))

// Assuming ConcreteInstruction // is a SequenceInstruction... while(!terminated())

calls[program_counter].run(vars)

// Assuming Command

// is a CallService1Command... args = build_args_from_vars(vars) ConcreteServer::service1(args)

图3:批处理

程序类的方法实现了在服务器上运行它所需的解释器。

当出现错误时,程序还负责执行有序的程序终止。terminate方法是作为程序终止的抽象接口提供的。

批处理的另一个名称,即COMPOSITECALL,来自这样一个事实:Program和后面的两个类是复合模式[5]的一个实例。

ControlStructure是一个由程序组成的结构。它的目的是将几个程序按照某种控制结构(如序列、迭代等)捆绑在一起。

ConcreteControlStructures表示具体的控制结构,如条件,而构造,序列等。在服务器端,这个类负责执行由类表示的具体控制结构。

4

ConcreteControlStructure构造函数可以在客户端用来构建复杂的程序。

命令是表示单个操作的程序。(它类似于[5]中显示的命令模式,因此得名)。具体命令的示例可以是算术操作、逻辑操作或对ConcreteServer入口点的调用。批处理的唯一目的是使用ConcreteControlStructures将几个具体的命令捆绑在一起。

varitable保存程序的变量。它提供了本地存储,还保存了程序的任何输入参数。程序的输出值也保留在变量中。这个表是在客户机上使用程序的输入参数集构建的。然后,在解释程序时,在服务器内部使用它。这个表最终在程序完成后返回给用户。

每个程序都有一个变量表(变量和程序对一起发送到批处理服务器)。因此,一个具体程序的所有组件共享一个变量表,以便它们可以共享变量。

Var是一个抽象类,表示发送到服务器的程序的变量它有一些相关的存储(字节,在图中)。Var实例保存在变量中。变量有一种模式,可以是in(给程序的参数)、out(给用户的结果)、inout(两者)或local(局部变量)。通过包含模式限定符,该类可以用于局部变量和输入/输出参数。

ConcreteVar是一个具体类型的变量(整数、字符等)。它的构造函数在客户机上用于声明程序要使用的变量或参数。在服务器端,这个类的实例负责处理程序使用的单个具体数据块。

4.2应用于文件服务器的模式

文件服务器示例的类的具体结构如图4所示。直观地说,这个批处理实例只是向文件服务器添加了一个解释器(参见[5]中的解释器模式)。该解释器可以执行以下程序:(1)调用读写,(2)可以使用while作为控制结构。

我们以FileServer类作为起点,它提供了对文件进行操作的读和写方法。

我们简化了文件服务器提供的典型接口。一个典型的文件服务器将包含几个提供读和写方法的文件对象。为了简单地说明该模式,我们省略了正在使用的文件1

BatchFileServer与FileServer位于同一位置,提供了一个新的执行服务,该服务提供了解释版本的FileServer服务。BatchFileServer对应于模式中的BatchServer(参见图3中的模式图)。

要获得一个完整的实现,只需添加一个文件类,并向读写方法中添加文件参数。

5

BatchFileServer execute(vars,aProgram)

FileServer read(buff) write(buff)

Program run(vars) terminate() VarT

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[262703],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。