HardBirch

利用Gearman,搭建异步分布式计算平台

时间:10-04-23 栏目:HTML5移动开发 作者:张飞不张,文采横飞 评论:1 点击: 2,404 次

Gearman的介绍

主页在http://gearman.org/index.php, 它的主要优点有:
1. 实现了异步计算。可以将比较耗时的计算分配到分布式计算集群来减少站点服务器的压力和用户的等待。例如passport里的邮件发送/头像上传裁减/国内外数据分离请求等等。
2. 跨语言,有利于多语言多系统之间的集成。PHP/Perl/Java/C++可以融合在一起,用Perl实现的邮件发送功能PHP也能自由调用,也可以使用Perl调用另一台服务器上用C++编写的程序的一个函数。
3. 便于扩展和实现负载均衡。可以通过增加worker的数量来提供更好的性能,在其中一台出现问题的时候能够由其他的worker来完成任务。
4. 开源
5. 快速: 利用了c最小化的减少了系统开销。

 

Gearman的安装配置

1.安装Gearman server and library:

wget http://launchpad.net/gearmand/tr ... gearmand-0.8.tar.gz
tar zxf gearmand-0.8.tar.gz
cd gearmand-0.8
./configure
make
make install

2.安装Gearman PHP extension:

wget http://pecl.php.net/get/gearman-0.4.0.tgz
tar zxf gearman-0.4.0.tgz
cd gearman-0.4.0
phpize
./configure
make
make install

3.编辑php.ini配置文件加载相应模块并使之生效:

extension = "gearman.so"

4.启动Job:

gearmand -d

如果当前用户是root的话,则需要这样操作:

gearmand -d -u root

缺省会使用4730端口,下面会用到。

以调试的方式启动:

gearmand -vv

5.编写Worker:

worker.php文件内容如下:

<?php
$worker= new GearmanWorker();
$worker->addServer('127.0.0.1', 4730);
$worker->addFunction('reverse', 'my_reverse_function');

while ($worker->work());

function my_reverse_function($job)
{
                return strrev($job->workload());
}
?>  

设置后台运行work:

php worker.php &

6.编写Client:

client.php文件内容如下:

<?php
$client= new GearmanClient();
$client->addServer('127.0.0.1', 4730);
echo $client->do('reverse', 'Hello World!'), "/n";
?>

运行client:

php client.php

输出:!dlroW olleH

 
可能遇到的问题
 
解决办法:在新立得里搜索并安装uuid-dev。
 
libgearman.so一般是在 /usr/local/lib下,看看/etc/ld.so.conf是否包含这个目录,执行/sbin/ldconfig -v刷新一下。
 
 
 是否在cli的php.ini下加入“extension="gearman.so"”这一行配置。
Gearman与Perl

安装Gearman模块,使用Gearman::Worker和Gearman::Client模块即可。
具体编码方式可参考cpan。
需要注意的是$client->do_task()方法返回的是一个reference。
下面是例子。

worker.pl
client.pl
Gearman异步模式的实现
在Perl的Gearman::Client模块里已经实现了异步的方法,采用dispatch_background时client请求不会等待worker的响应就立即返回了。

声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: 利用Gearman,搭建异步分布式计算平台

利用Gearman,搭建异步分布式计算平台:目前有1 条留言

  1. 沙发
    yolanda824:

    Hi Mr.Jiang,

    It's very glad to visit your blog today. i am ThoughtWorkers HR Yolanda,we are now currently seeking for talents in China. I came cross your Blog and felt quite interested in your background. ThoughtWorks is a great place to work, and We inspire each other to innovate and share ideas in an open environment.

    Please read the introduction below.
    If you are interested and willing to join our team, please feel free to get back to us with your Interest and resume at your earliest convenience.

    Our Chief Scientist: Martin Fowler http://martinfowler.com/
    Our company link: http://www.thoughtworks.com
    My Mail: yzhong@thoughtworks.com

    2012-01-19 19:17 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐