博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gearman简介及安装使用
阅读量:5251 次
发布时间:2019-06-14

本文共 2443 字,大约阅读时间需要 8 分钟。

一.Gearman是什么?

Gearman是一个分发任务的程序框架。它由三部分组成,如下图:

Gearman Client:它提供Gearman Client API给我们的应用程序调用API可以使用是 CPHPPerlMySQL UDF 等等语言,它是请求的发起者   Gearman Job Server:将客户端的请求分发到各个Gearman Worker的调度者,相当于中央控制器,它不负责处理具体业务逻辑。

Gearman Worker:它提供Gearman Worker API给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。

 

二.Gearman能干什么?

通过上面可以看出,在Gearman ClientGearman Worker可以使用不同的编程语言,这给我们在不同语言通信提供了机会。比如客户端我们用的是PHP,在具体处理的Gearman Worker中,我们则可以使用C

另外,由于中间的Gearman Job Server,它可以把一个请求分发到众多worker中的一个,可以用来做负载均衡。

另外,Gearman在处理并发方面也是大大有用的。

 

三.Gearman的安装使用

首先下载Gearman的相关源码,地址:gearmandhttp://launchpad.net/gearmand/trunk/0.24/+download/gearmand-0.24.tar.gz

libgearman (C)Gearman PHP Extension

我们为了清楚的演示,将gearmand安装在192.168.132.30Job server)上面,在分别将Gearman PHP扩展安装的机器192.168.132.64worker)和192.168.132.68client)上面。Workerclient我们都使用PHP语言。
192.168.132.30Job server)上面:

tar xvzf gearmand-0.24.tar.gz cd gearmand-0.24/ ./configure make sudo make install //如果在configure时报错,则可能缺少包,可能需要安装如下包: sudo apt-get install libboost-program-options-dev libevent-dev uuid-dev //开启Gearmand服务    gearmand -d

192.168.132.64worker)和192.168.132.68client),分别如下:

//首先安装PHP 扩展需要的libgearman    tar xvzf gearmand-0.14.tar.gz    cd gearmand    ./configure make sudo make install //如果在configure时报错,则可能缺少包,可能需要安装如下包: sudo apt-get install libboost-program-options-dev libevent-dev uuid-dev //安装PHP扩展    tar xvzf gearman-0.7.0.tgz    cd gearman phpize    ./configure --with-php-config=/data0/php52/bin/php-config    make    make install    //找到PHP的配置文件php.ini,编辑它    vim php.ini    //在php.ini的末尾加上    extension=gearman.so

以上都好了以上,可以使用 php -re gearman看一些是不是gearman扩展安装成功了。

下面我们来测试一下:

192.168.132.64worker),编辑文件worker.php:

addServer("192.168.132.30",4730); //连接到Job server 上 $worker->addFunction("reverse","my_reverse_function"); while ($worker->work()); function my_reverse_function($job) {
returnstrrev($job->workload())." worker1"; } ?>

然后在后台运行该文件:php worker.php &.

再编辑一个文件worker2.php,输入内容:

 

addServer("192.168.132.30",4730); //连接到Job server 上 $worker->addFunction("reverse","my_reverse_function"); while ($worker->work()); function my_reverse_function($job) {
returnstrrev($job->workload())." worker2"; } ?>

在后台运行该文件:php worker2.php &

192.168.132.68client),编辑文件 client.php:

addServer("192.168.132.30",4730); //连接到Job server上 echo$client->do("reverse","Hello World!"); ?>

 然后多次运行php client.php,应该可以看见输出不同的结果。               

转载于:https://www.cnblogs.com/codebean/archive/2011/07/26/2117074.html

你可能感兴趣的文章
Cocos2d-x中Vector使用
查看>>
第十一次作业
查看>>
mybatis CRUD
查看>>
负载均衡策略
查看>>
Go 语言的基本数据类型
查看>>
数据库建立索引加快查询
查看>>
[codevs 2235]机票打折
查看>>
微信智能开放平台
查看>>
C# ArcgisEngine开发中,对一个图层进行过滤,只显示符合条件的要素
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>
Oracle--通配符、Escape转义字符、模糊查询语句
查看>>
子网划分讲解及练习(一)
查看>>
Python 装饰器
查看>>
c# 文件笔记
查看>>
Vue 自定义指令
查看>>
帆软 控件内容 清除
查看>>
第一页 - 工具的使用(webstorm)
查看>>
.net static 变量
查看>>
The Number of set-hdu-3006
查看>>
[设计模式]适配器模式与外观模式
查看>>