当前位置:  数据库>oracle

CentOS的Gearman安装与使用无错版

    来源: 互联网  发布时间:2017-04-06

    本文导语: 通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下,Gearman也能实现类似...

通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用WebService的方式来处理此类集成问题,但不管采用何种风格的WebService,如RPC风格,或者REST风格,其本身都有一定的复杂性。相比之下,Gearman也能实现类似的作用,而且更简单易用。

一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。

Client:请求的发起者,可以是C,PHP,Perl,MySQL UDF等等。
Job:请求的调度者,用来负责协调把Client发出的请求转发给合适的Work。
Worker:请求的处理者,可以是C,PHP,Perl等等。

因为Client,Worker并不限制用一样的语言,所以有利于多语言多系统之间的集成。

甚至我们通过增加更多的Worker,可以很方便的实现应用程序的分布式负载均衡架构。

下面看看如何安装运行一个例子,条件所限,我们把Client,Job,Worker三个角色运行在一台服务器上:

安装libevent:

wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gz
tar zxvf libevent-1.4.12-stable.tar.gz
cd libevent-1.4.12-stable/
./configure --prefix=/usr
make && make install
/sbin/ldconfig
cd ../





 

安装Gearman server and library:

wget http://launchpad.net/gearmand/trunk/0.9/+download/gearmand-0.9.tar.gz
tar zxvf gearmand-0.9.tar.gz
cd gearmand-0.9
./configure
make
make install
/sbin/ldconfig
cd ../









安装Gearman PHP extension:

wget http://pecl.php.net/get/gearman-0.5.0.tgz
tar zxvf gearman-0.5.0.tgz
cd gearman-0.5.0
/usr/local/webserver/php/bin/phpize
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-gearman
make
make install
cd ../

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

extension = "gearman.so"

启动Job:

gearmand -d

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

gearmand -d -u root

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

注意:如果找不到gearmand命令的路径,别忘了用 gearmand确认。
























 

我们可以用 ps 指令來查看启动是否成功:

ps aux |grep gearman
CentOS的Gearman安装与使用无错版[图片]

编写Worker:

worker.php文件内容如下:














设置后台运行work:

#php /var/www/html/worker.php &







编写Client:

client.php文件内容如下:







运行client:

#php /var/www/html/client.php

输出:!dlroW olleH







 

首先, PHP Gearman Extension 提供了一个名为GearmanClient 的类别,它可以让程序安排工作给 Job Server 。

addServer 方法表示要通知的是哪些 Job Server ,也就是说如果有多台 Job Server 的话,就可以透过 addServer 新增。

然后我们将要呼叫哪个 Worker 以及该 Worker 所需要的数据,利用 GearmanClient 的doBackground 方法传送过去。 doBackground 方法顾名思义就是在背景执行, Client 在丢出需求后就可以继续处理其他的程序。

=============

$client->doBackground('sendEmail', serialize($emailData));
echo "Email sending is done.n";

============

doBackground 方法的第一个参数是告诉 Job Server 要执行哪个功能,而这个功能则是由 Worker 提供的;要注意是,这个参数只是识别用的,并不是真正的函式名称。而第二个参数是要传给 Worker 的数据,它必须是个字符串;因此如果要传送的是数组的话,我们就要用 PHP 的 serialize 函式来对这些资料做串行化。

出于方便的考虑,Worker,Client使用的都是PHP,但这并不影响演示,实际应用中,你完全可以通过Gearman集成不同语言实现的Worker,Client。或许此时你还想了解前面提到的负载均衡功能:很简单,只要增加多个Worker即可,你可以按照worker.php的样子多写几个类似的文件,并设置不同的返回值用以识别演示效果。然后依次启动这几个Worker文件,并多次使用client.php去请求,你就会发现Job会把Client请求转发给不同的Worker。

以守护进程启动
gearmand -L 192.168.0.1 -p 4730 -u root -d

命令行工具

如果你觉得安装PHP之类的东西太麻烦的话,你也可以仅仅通过命令行工具来体验Gearman的功能:

启动Worker:gearman -w -f wc -- wc -l &
运行Client:gearman -f wc < /etc/passwd

具体可以参考官方文档





















    
 
 

您可能感兴趣的文章:

  • Gearman::XS在Centos下的编译安装方法
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • ThinkPad E420 安装Win7 CentOS5.7 不能进入CentOS 图形化用户登录界面
  • CentOS下PHP安装完成后继续安装GD扩展库
  • 在windows 7 系统下安装了CentOS 默认进入的是CentOS如何修改?
  • 最新CentOS 7中文正式版64位下载、安装及CentOS网卡IP配置(ifconfig)(图文)
  • CentOS 5 环境下安装oracle 10g 与 rhel 5下 安装有区别吗? [散分]
  • linux/centos下安装nginx(rpm安装和源码安装)详细步骤
  • vmware 安装centos 6.0 出现问题
  • linux/centos安装nginx常见错误及解决办法
  • 我通国光盘安装了CENTOS4.4 但发现没有安装上LINUX源码 不知道 则么安装上去阿
  • CentOS安装Telnet,以root用户登陆Telnet以及CentOS的各种终端解释
  • IBM System x3400 无法安装 CentOS 6.2
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 请问大家安装centos的问题
  • centos 6.0 如何安装C++编译器
  • 请问:centos 完全安装了,但是却没有DNS的nameserver命令,这怎么办啊?
  • centOS5.4与xp sp3 双系统安装后centOS5不能ping通网关
  • CentOS 6.0安装全过程图文详解
  • CentOS-5.2版 Linux系统中的apache的安装路径以及Subversion安装中的问题
  • 请教:服务器安装CentOS精简版系统,找不到硬盘
  • linux centos 下查找软件所安装的目录在哪里,用什么命令阿
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux/Centos/ubuntu下如何使用umask命令修改新建文件时的默认权限
  • 平时使用root登录CentOS 危险性打吗?
  • 我使用虚拟机vm安装centos6.3 到了下面的界面就再也不动了,何解
  • Centos 5.2下普通权限用户使用Firefox3.0.4无法后退刷新?
  • centos从使用rpm安装的php怎么升级啊?
  • centos5.5,使用虚拟机装的,怎么安装vim呢?
  • CentOS 4.5 中 startx怎樣才能使用?
  • [linux_centos6.3_xampp]中型网站如何分析带宽使用?
  • centos中老是报错:Address already in use:8080,但是ps aux实际上没有看到8080端口在使用
  • 使用PuTTY远程登录到CentOS系统中(Linux)只要不去操作几分钟,就会断线
  • 使用Acronis True Image备份CentOS5.4遇到的问题。
  • centos6 无法使用zhcon
  • 新建centOS 4虚拟机,在win7中使用scrt连接不上
  • CentOS Linux里,如何使用命令打包特定的文件?
  • CentOS下使用Squid架设CDN服务器的方法
  • centos6使用yum安装php mysql与gd扩展库的方法
  • CentOS 5.5使用yum安装LAMP(php环境)步骤分享
  • CentOS 6.2使用yum安装LAMP与phpMyadmin
  • 浙ICP备11055608号-3 iis7站长之家
  • 谁有http://centos.ustc.edu.cn/CentOS-Base.repo.5这个文件?
  • 如何在windows上远程连接centOS桌面
  • CentOS6.0版本没有CentOS5.0版本人性化
  • redhat/centos 常用信息查看命令整理
  • 有人用过centos吗?请问在centos下怎么在终端运行C语言程序或者JAVA程序?
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 还是centos的源问题
  • redhat linux/CentOS 6/7 关闭防火墙(iptables)命令,作用:CentOS 防火墙不关行不行?
  • 中国哪里有CentOS 5.2下载镜像?
  • CentOS yum 源设置为163的源操作步骤及配置文件参考
  • centos mplayer菜单中文乱码
  • Centos 5系列最新版5.9介绍及下载地址


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3