跨计算机执行的几个方法
1. gearman:
如果允许一个job在多个计算机中的任意一台上执行, 可以使用gearman, 换言之, 这些计算机必须是对等的. gearman 有2个组件: 一个是 job 的server, 一个是job 的 worker. server和worker既可以在一个节点上, 也可以在不同的节点上. 同时, 也允许存在多个server/worker, 这时, gearman 自己会决定要将job分配哪个worker上. 所以gearman可以为job执行服务端提供高可用和负载平衡. 但job client段的高可用它是不管的.
2. fabric 开源项目 或 func(redhat)的开源项目
fabric是基于ssh协议的. func是也采用类似ssh的协议.
fabric一般的用法是, 使用python语言编写fab file, 然后在命令行中写明要在哪个机器上执行这个fab文件.
func有2种用法, 既可以直接使用命令行; 也可以编写pytho脚本, 在脚本中写明要在哪个计算机上执行.
fabric在windows安装步骤如下, (Python的ssh模块安装类似)
3. XMLRPC方式(SimpleXMLRPCServer和xmlrpclib组合)
和COM等类似, 不过xmlrpc和jsonrpc都是跨语言的rpc调用协议, python还有一些专用的rpc实现, 列表见 http://stackoverflow.com/questions/1879971/what-is-the-current-choice-for-doing-rpc-in-python
SimpleXMLRPCServer和xmlrpclib是python的标准库, 文档最全, 可优先选择.
http://www.doughellmann.com/PyMOTW/SimpleXMLRPCServer/index.html
http://www.doughellmann.com/PyMOTW/xmlrpclib/index.html
如果追求高效, 基于protobuf和msgpack是更好的选择, 尤其是msgpack. 序列化包为msgpack-python, rpc包为msgpack-rpc-python.
这3种远程执行方式的比较
fabric/func这两个东西多用在自动化部署上.fabric/func是指哪打哪的工具, 也就是说你发出job后, 就只知道将来job会在哪个机器上执行, 它们的job就像是bat批处理文件一样, 是OS命令的组合.
gearman是一个智能的任务分配器, 非常适合作为一个任务执行的集群, 它的job是函数级的东西.
XMLRPC, 这个也是指哪打哪的执行方式, 适合于开发agent, 或者C/S结构的软件. 它的job也是函数级的东西.