批处理:高效灵活的客户端/服务器交互设计模式
1. 引言
在客户端/服务器交互模式的应用中,像代码下载、消息批处理、聚集/分散和移动代理等,都会将一组操作集中起来提交给服务器执行,目的是减少跨域操作和实现服务器动态扩展。例如,将代码下载到操作系统内核既能节省跨域操作,又能实现系统扩展;消息批处理和移动代理则侧重于节省跨域操作。
以文件服务器程序为例,在典型的客户端/服务器交互中,客户端发送命令(读或写)到服务器,等待响应后再继续。若读写操作由同一服务器处理,且跨域调用(从客户端到服务器)比服务器内部调用开销大很多,那么将整个循环代码发送到文件服务器执行会更高效。
copy (File aFile, File otherFile) {
while (aFile.read (buf))
write (otherFile.write (buf));
}
如图所示,不使用批处理时会有多次跨域调用,而将代码发送到服务器执行只需一次调用,但这需要扩展文件服务器以支持不同客户端提交的程序执行。
2. 问题分析
跨域数据流量和跨域调用延迟对多域应用的效率有显著影响。在集中式环境中,如操作系统的用户空间和内核空间之间、多进程应用的不同进程之间,以及分布式系统的网络中,都存在跨域调用和数据传输。
设计应用时需考虑不同域之间的界限,主要问题有数据移动和调用延迟:
- 数据移动 :在保护域内,对象间可高效传递数据,大量数据传递可用引用。但跨域传递数据时,通常需要复制。在文件系
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



