分布式计算基本的思想是将一个大任务分散成几个小任务,交给分布式网络中的计算机去完成。在分布式计算的环境中,必须保证网络中的计算机的可用性(避免网络延迟、非预知的崩溃等)。所以就需要可以可持续的监控架构。
采用这种技术产生的根本问题是对各种类型的流量(数据,任务,命令等)进行适当的分配。此外,还有一个分布式系统基础特征产生的问题:网络由不同操作系统的计算机组成,很多互不兼容。实际上,随着时间的推移,为了使用分布式环境中的不同资源,已经可以识别不同的计算模型。他们的目标是提供一个框架,为一个分布式应用的不同处理器之间描述合作方法。
我们可以说,基本上各种模型的不同点是分布式系统能提供的容量的大小。最常用的模型是服务器/客户端模型。它可以让不同的进程运行在不同的计算机上,通过交换消息进行实时的合作。相对于前一个模型有很大的提高,前一个模型要求将所有的文件分发到所有的机器上,从而进行离线的计算。客户端/服务器模型典型的实现是通过远程的程序调用(这是本地调用的扩展),或者通过分布式对象的程序(面向对象的中间件)。本章将介绍一些Python提供的类似的计算架构。然后我们会介绍一些用OO的方法或远程调用实现了分布式架构的库,例如 Celery,SCOOP, Pyro4 和 RPyC,也有一些使用了不同方法的库,例如 PyCSP 和Disco,Python版本的 MapReduce 算法。