用任务分发系统Gearman来加速你的计算任务

· Read in about 1 min · (20 Words)

前面一篇中讲到利用多线程编程来充分利用多核来加速任务处理,Gearman则可以利用多台机器的多核。

Gearman 是一个任务分发系统,它提供了一个分发框架,能够分发某类任务到更适合处理这类任务的服务器上去处理。并且,它支持任务并行处理、负载均衡以及多语言调用。它的适用范围很广,从高可用性的网站到透明的数据库复制等。换句话说,它是一个强健的分布式通信处理系统。

据我有限的实践得到的一些经验:

  • Gearman主要适用于相对独立、计算密集的任务。
  • 基于其多语言支持的优势,worker和client可以分别使用最合适的语言编写。
  • 最好用于共享存储系统的HPC,方便管理worker。
  • 最好写管理软件自动部署server和workers。
  • Server和worker间的通信所消耗的时间需要考虑到。
  • 需要通过测试寻找最佳的server和workers数量比例,通常很少量的server就够了。
  • 通信内容我用的是json字符串,方便解析。
  • 如果server和worker都在本地,则实质为多进程编程,所以非常容易扩展。

扩展

  1. http://gearman.org/
  2. http://blog.csdn.net/breeze_life/article/details/9628503
  3. http://www.php-oa.com/2011/07/01/mapreduce-using-perl-and-gearman.html
  4. http://hi.baidu.com/zeyu203/item/7d9ad2f8bbfb4ad66225d26f
  5. 分布式任务分发框架Gearman测试、性能监控、队列持久化【python 实例】
  6. Gearman分布式任务处理系统系列介绍