gearman安装

官网:  http://gearman.org/

一篇文章:

利用Gearman实现异步任务处理

一、问题分析

问题:在性能测试过程中,发现用户管理平台在进行图片上传时,性能不佳。

分析:经过代码分析得知,主要的瓶颈是图片上传后,还需要根据图片组件所在页面模块容器进行一系列处理:图片生成缩略图,裁剪图片,加水印等,这些处理在高并发的情况下,会消耗大量cpu资源,导致系统响应速度非常慢。

旧的处理方式:

次控端调用前台接口进行上传图片后,前台程序先上传图片,接着,进行图片压缩等处理,然后再返回结果给次控端。

整个过程是串行的,次控端需要等待前台的结果后,再显示给用户。这个过程存在时间浪费,图片的处理可以提交到后台再进行处理,不需要马上处理。

因此,考虑采用Gearman进行异步任务处理。

新的处理方式:

次控端调用前台接口上传图片,前台保存要上传的图片后,提前返回信息给次控端,接着,调用Gearman增加一个任务,然后,由Gearman自动指派任务给服务器进行任务处理。采用新的处理方式后,次控端操作体验更加快捷。

二、Gearman详细介绍

简介:

官网:http://gearman.org/

Gearman是一个分布式的程序框架。Gearman提供了一个通用的应用程序,可以工作在更加适合处理这项任务的其他计算机或其他处理器上。它允许并行处理,载入平衡处理,而且可以在不同语言间进行调用。它可以应用于各种各样的应用场合。换句话说,它是一个进行分布式处理的强健系统。以下是关于Gearman的一些长处:

l  开源:完全开源,免费的。

l  多语言:有许多语言接口,而且支持的语言数量一直在增加。

l  灵活:不依赖于任何特定的设计。

l  快速:简单的协议和接口,可以减少现有应用程序的开销。

l  嵌入:轻量,可以以最小的代价引入到现有程序。

l  没有单点故障:具有较强的容错性。

框架:

(摘自官网)

Gearman Client:提供客户端调用,API可以是多种语言,目前在智能建站里应用的是PHP语言

Gearman Job Server:调度者,负责把来自客户端的请求分发到不同服务器或不同处理器上的Worker。

Gearman Worker:负责任务处理,并返回结果。

说明:应用程序通过Client API调用创建客户端请求,Job Server把请求分发到不同的worker上进行处理,Worker接收到请求并进行处理后返回结果。

以下是Gearman中三个基本模块的调用关系图:

(摘自官网)

Client与Worker是可以由不同的语言来写的,例如:Client由PHP来写,Worker由C语言来写。这样就可以很方便地把不同的语言编写的接口进行各自的接口封装。

不管是把Worker放到单独服务器,还是放到集群服务器,Worker都可以正常运行。

Client发送任务到Job Server中,由Job Server负责调度,Job Server会自动检测空闲的Worker,并发送任务到这个空闲的Worker,Worker进行任务处理。因此,Gearman框架可以实现资源负载平衡。

Gearman框架具有很强的扩展性。这个框架支持多核心CPU。如果Worker所在的服务器太繁忙,可以把服务器的CPU换成更多核心的CPU,如16核CPU,这样就可以在这台服务器上创建16个Worker实例来进行处理。当然,Gearman也支持服务器的扩展,可以很方便地扩展出更多的Worker服务器来处理请求。唯一需要做的事情就是:启动新服务器,安装好Worker程序,并修改配置即可。

如果服务器挂掉了,Gearman会如何处理呢?我们可以同时运行多个Job Server,Client和Worker连接到配置好的Job Server。如果这台Job Server出现故障,则配置到这台的Client和Worker会自动连接到另外一台可用的Job Server。这里建议大家,至少要有两台以上的Job Server,利用冗余来提高系统的容错性。

安装:

Job Server (gearmand)

gearmand (C)

A job server written in C/C++ under the BSD license that contains all of the latest protocol additions. Development for this is very active, with threading, persistent queues, and pluggable protocols now supported. Replication and better statistics reporting are coming soon. This installs an executable calledgearmand (usually in /usr/local/sbin). The C library, libgearman, is bundled in the same package.

  • The latest version can be found on Launchpad.

./configure --prefix=/opt

安装报错:

checking whether the Boost::Program_Options library is available... yes
configure: error: Could not find a version of the library!

configure: error: could not find gperf

configure: error: Unable to find libuuid

安装后还是错误。

安装 gearmand 后,构建 PHP 扩展。您可以从 PECL 获取这个 tarball,也可以从 Github 复制该存储库。

$ wget http://pecl.php.net/get/gearman-0.6.0.tgz$ cd pecl-gearman## or#$ git clone git://github.com/php/pecl-gearman.git$ cd pecl-gearman

有了这些代码后,就可以开始构建扩展了:

$ phpize$ ./configure$ make$ sudo make install

./configure 后面可以设置php-config路径:

./configure --prefix=/opt --with-php-config=/usr/local/php/bin/php-config

还是报错:

configure: error: Please install libgearman

我们在安装gearman的时候,已经有libgearman了,但是在编译扩展的时候,却用额外安装的lib,在运行的时候,难免出现性能方面的问题

在./configure的时候指定下gearman的路径就是了,不必降低额外安装libgearman及降低版本(http://blog.csdn.net/aidenliu/article/details/7406390

./configure --prefix=/opt --with-php-config=/usr/local/php/bin/php-config --with-gearman=/opt

这个 Gearman 守护程序通常被安装在 /usr/sbin。可以从命令行直接启动此守护程序,也可以将这个守护程序添加到启动配置中,以便在机器每次重启时就可以启动这个守护程序。

接下来,需要安装 Gearman 扩展。打开 php.ini 文件(可以通过 php --ini 命令快速找到这个文件),然后添加代码行 extension = gearman.so

$ php --iniLoaded Configuration File:         /etc/php/php.ini$ vi /etc/php/php.ini ...extension = gearman.so

保存此文件。要想验证扩展是否启用,请运行 php --info,然后查找 Gearman:

$ php --info | grep "gearman support"gearmangearman support => enabledlibgearman version => 0.10

此外,还可以用一个 PHP 代码片段来验证构建和安装是否得当。将这个小应用程序保存到 verify_gearman.php:

<?php  print gearman_version() . "\n";?>

接下来,从命令行运行此程序:

$ php verify_gearman.php0.10

如果这个版本号与之前构建和安装的 Gearman 库的版本号相匹配,那么系统就已准备好了。

http://www.oschina.net/question/12_7687

安装参考:

http://blog.chinaunix.net/uid-27177626-id-4325909.html

http://www.php-oa.com/2010/09/05/perl-gearman-distributed.html

http://www.oschina.net/question/12_7687

http://maoyidao.iteye.com/blog/1402972

http://blog.csdn.net/aidenliu/article/details/7406390

http://www.zrwm.com/?cat=80

http://www.cppblog.com/guojingjia2006/archive/2013/01/07/197076.html

时间: 2024-12-27 12:01:54

gearman安装的相关文章

gearman安装实录

花了5个小时装好了gearman,问题不断,坑爹的服务器yum还坏了,悲催. 服务器系统:centos5.3 64位 gearman版本:1.1.8 安装包(相关依赖)下载 1.gearman安装包 wget https://launchpad.net/gearmand/1.2/1.1.8/+download/gearmand-1.1.8.tar.gz 2.Boost wget http://sourceforge.net/projects/boost/files/boost/1.50.0/bo

Linux中Gearman安装与使用,分布式消息队列(CentOS-6.5:gearmand-1.1.12)

1 Gearman简介 1.1 概况 Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来在调用其它语言的函数的系统. 1.2 组成 Gearman是一个分发任务的程序架构,由三部分组成: 1)Gearman client:提供gearman client API给应用程序调用.API可以使用C,PHP,PERL,MYSQL UDF等待呢个语言,它是请求的发起者. 2)Gearman job server:将客户端的请求

Gearman 安装使用教程

#安装运行依赖 yum install -y boost boost-devel libevent gperf libuuid libuuid-devel #下载最新版 Gearman wget --no-check-certificate https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz ./configure make && make install mkdir -p /usr/loca

分布式调用gearman安装

------------------------------------------------------------- 操作系统  LINUX Centos6.6 64位 环境lnmp -------------------------------------------------------------- gearman,官网 (http://gearman.org/)下载地址(https://launchpad.net/gearmand/+download)从名字上看叫做"齿轮工&qu

[Gearman] centos上Gearman的安装

一.简介 Gearman安装分2步,第1步是gearmand的安装,第2步是gearman的PHP扩展的安装. 第1步: 二.gearmand的安装 1.首先安装libdrizzle #yum install libdrizzle libdrizzle-devel 2.安装gearman(两种方法1.yum2.源码包).(c版的server) 1)yum安装 #rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/e

Ubuntu 12.04 安装 gearman 以及php扩展安装脚本

#!/usr/bash #create by lhb #date 2014-05-07 #desc install gearman and php extension for Ubuntu 12.04.4 LTS PHP 5.5 apt-get update #安装依赖库 apt-get install libboost-all-dev gperf libevent1-dev libcloog-ppl0 mkdir -pv /home/lhb/software && cd /home/lh

centos上Gearman的安装

一.简介 Gearman安装分2步,第1步是gearmand的安装,第2步是gearman的PHP扩展的安装. 第1步: 二.gearmand的安装 1.首先安装libdrizzle #yum install libdrizzle libdrizzle-devel 2.安装gearman(两种方法1.yum2.源码包).(c版的server) 1)yum安装 #rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/e

gearman+php 安装以及使用

Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来在调用其它语言的函数的系统. 官方网站:http://gearman.org/ 以下的操作均在ubuntu12.0下进行,其他操作系统均雷同. 1.gearman安装 安装依赖包 sudo apt-get install libboost-program-options-dev libevent-dev uuid-dev 截止笔者发表博文gearman最新稳定版本1.0

gearman(异步计算)学习

Gearman是什么? 它是分布式的程序调用框架,可完成跨语言的相互调 用,适合在后台运行工作任务.最初是2005年perl版本,2008年发布C/C++版本.目前大部分源码都是(Gearmand服务job Server)C++,各个API实现有各种语言的版本.PHP的Client API与Worker API实现为C扩展,在PHP官方网站有此扩展的中英文文档. 2Gearman架构中的三个角色 client:请求的发起者,工作任务的需求方(可以是C.PHP.Java.Perl.Mysql ud