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
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
可能遇到的问题
- Couldn't find uuid/uuid.h
解决办法:在新立得里搜索并安装uuid-dev。
- gearmand: error while loading shared libraries: libgearman.so.1: cannot open shared object file: No such file or directory
libgearman.so一般是在 /usr/local/lib下,看看/etc/ld.so.conf是否包含这个目录,执行/sbin/ldconfig -v刷新一下。
- Fatal error: Class 'GearmanWorker' not found
是否在cli的php.ini下加入“extension="gearman.so"”这一行配置。
Gearman与Perl
安装Gearman模块,使用Gearman::Worker和Gearman::Client模块即可。
具体编码方式可参考cpan。
需要注意的是$client->do_task()方法返回的是一个reference。
下面是例子。
安装Gearman模块,使用Gearman::Worker和Gearman::Client模块即可。
具体编码方式可参考cpan。
需要注意的是$client->do_task()方法返回的是一个reference。
下面是例子。
worker.pl
- use Gearman::Worker;
- my $worker = Gearman::Worker->new;
- $worker->job_servers('127.0.0.1:4730');
- $worker->register_function("reverse", /&test);
- $worker->work while 1;
- sub test {
- return join(' ', $_[0]->handle, $_[0]->arg, 'world', "/n");
- }
client.pl
- use Gearman::Client;
- my $client = Gearman::Client->new;
- $client->job_servers('127.0.0.1:4730');
- # running a single task
- my $result = $client->do_task("reverse", "hello"); # return a scalar reference
- print $$result;
Gearman异步模式的实现
在Perl的Gearman::Client模块里已经实现了异步的方法,采用dispatch_background时client请求不会等待worker的响应就立即返回了。
在Perl的Gearman::Client模块里已经实现了异步的方法,采用dispatch_background时client请求不会等待worker的响应就立即返回了。
相关推荐
Gearman是一种分布式任务队列系统,它允许应用程序在不同的服务器之间分发工作负载,从而实现负载均衡和异步处理。本篇文章将详细讲解如何在Linux环境中搭建Gearman,包括依赖库的安装和Gearman服务的配置。 首先,...
Gearman 是一个分布式任务队列系统,它允许应用程序在需要时分发工作并异步处理结果。这个名为 "gearman-mysql-udf-0.6.tar.gz" 的压缩包包含了一个 Gearman 与 MySQL 结合使用的用户定义函数(UDF)插件,版本为 ...
本文实例讲述了PHP使用gearman进行异步的邮件或短信发送操作。分享给大家供大家参考,具体如下: 一、准备工作 1、为了防止,处理业务途中出现的宕机,请配置好gearman的持久化方式。 2、使用gearmanManager来管理...
Gearman作为一种强大的集群计算框架,通过其灵活的任务调度机制和高效的异步处理能力,能够有效提升系统的性能和可扩展性。无论是在大型社交平台如LiveJournal的应用场景下,还是在各种高性能计算环境中,Gearman都...
Gearman 是一个分布式任务队列系统,它允许应用程序在多台服务器之间分发工作负载,...通过学习和使用这个项目,你可以更好地理解和利用Gearman在分布式系统中的优势,提升你的应用在高并发和大规模数据处理时的能力。
Gearman是一种开源的分布式任务队列系统,它允许应用程序在多台机器上分发工作,以便充分利用计算资源,实现负载均衡和高可用性。在Java环境中,我们可以利用Gearman库来构建分布式工作流程,实现任务的异步处理和...
综上所述,Laravel 结合 PHP Gearman 提供了一个强大而灵活的解决方案,用于处理异步任务和分布式计算,极大地提升了系统的整体性能和可靠性。在实际开发中,根据项目需求,可以灵活地调整任务处理策略,实现高效的...
为了解决这一问题,金山逍遥网提出了一种基于Gearman分布式计算框架的DIPS(Distributed Image Processing System)分布式图片处理平台。该平台旨在通过合理分配服务器资源,特别是那些CPU利用率较低但具备较高计算...
在现代Web开发中,异步任务处理和分布式计算已经成为提升系统性能的关键技术。Laravel作为PHP的流行框架,提供了丰富的工具来支持这类需求。本篇文章将深入探讨如何在Laravel项目中集成Gearman,构建RPC(远程过程...
在介绍PHP使用Gearman进行任务分发操作的过程中,有几个关键知识点需要详细阐述: ...掌握了这些知识点后,开发者可以有效地利用Gearman解决Web应用中的长耗时任务处理问题,提高应用性能和用户体验。
GearMAN是一个高效的分布式任务框架,最初设计用于解决Web2.0环境中图片处理等耗时任务的快速分配和执行问题。它的名字来源于“Generic Worker Manager”,意在成为一个通用的任务分发工具。GearMAN通过将任务分配给...
在Java中,我们可以利用 Gearman 的客户端库来与 Gearman 服务器进行交互,执行分布式任务。本篇文章将深入探讨 Gearman 的 Java APIs,并通过一个小 Demo 展示其用法。 ### Gearman 的基本概念 1. **Worker**:...
在实际应用中,Gearman可以广泛应用于大数据处理、后台任务执行、实时计算等场景,通过其强大的异步处理能力和分布式特性,提升系统的响应速度和可扩展性。使用Gearman Java客户端,开发者可以轻松地在Java应用中...
在本实例中,我们关注的是如何在C++环境中,利用Visual Studio 2008(VS2008)在Windows平台上创建一个Gearman Worker。 首先,理解Gearman Worker的角色至关重要。Worker是执行由Job Server分发的任务的程序。当...
Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。
在PHP的世界里,Gearman是一个强大的分布式任务处理框架,它允许开发者将任务分发到多台服务器上执行,从而实现负载均衡和异步处理。本文将深入探讨net_gearman-master.zip,这是一个专为PHP设计的Gearman客户端插件...
异步计算是分布式计算的一种实现方式,它允许计算任务在不同的时间或不同的节点上执行,而不需要立即反馈结果。这样可以在处理大量数据和长时间任务时,避免资源的浪费,提高系统的效率。Gearman是一个开源的框架,...
Gearman是一个分布式任务队列系统,它允许应用程序在任何地方运行任务,而无需关心它们在哪里运行或如何运行。Gearman-Java是Java语言对Gearman的客户端库,它提供了与Gearman服务器通信的能力,用于分发工作负载...
总之,Java Gearman Service 0.6.6 是一个强大的工具,它让Java开发者能够充分利用Gearman的工作队列系统,构建出高效、可靠的分布式应用。通过合理的任务调度和异步处理,它可以帮助你优化系统性能,应对高并发和大...