CentOS的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命令的路径,别忘了用whereis gearmand确认。
我们可以用 ps 指令來查看启动是否成功:
![](/assets/blank.gif)
编写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 /var/www/html/worker.php &
编写Client:
client.php文件内容如下:
<?php
$client= new GearmanClient();
$client->addServer('127.0.0.1', 4730);
echo $client->do('reverse', 'Hello World!'), "\n";
?>
运行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
具体可以参考官方文档,还有一些不错的PDF。
http://docs.php.net/manual/zh/book.gearman.php
http://www.ibm.com/developerworks/cn/opensource/os-php-gearman/index.html
也可以参考此文:http://www.jaceju.net/blog/archives/1211
分布式基础学习【一】 —— 分布式文件系统
http://www.cnblogs.com/duguguiyu/archive/2009/02/22/1396034.html
分布式基础学习【二】 —— 分布式计算系统(Map/Reduce)
http://www.cnblogs.com/duguguiyu/archive/2009/02/28/1400278.html
淘宝网Hadoop专家
http://coderplay.javaeye.com/
CentOS的Gearman安装与使用无错版相关推荐
- 虚拟机安装CentOS以及SecureCRT设置【完美无错版】
一.CentOS简介 CentOS是Linux的发行版之一,它安全.稳定.高效,是我最喜欢的Linux发行版之一.CentOS根据Red Hat Enterprise Linux开放源代码编译而成,与 ...
- CentOS源码安装GitLab汉化版第3版
软件版本: 软件 版本 CentOS 7.5 GraphicsMagick 1.3.31 Git 2.21.0 Ruby 2.5.3 Go 1.12 Node.js 10.15.2 PostgreSQ ...
- Centos5.6 VNC安装配置【无错版】
不严格按本步骤就会出现VNC桌面花屏,就是桌面分离为一层一层的... ---------------------------------------- 先装X window http://blog.c ...
- linux centos 命令行 安装 teamviewers ___yyw合并版
参考: 1.http://blog.csdn.net/changgongzhao/article/details/52299314 2.http://blog.csdn.net/dreamhai/ar ...
- PHP消息队列httpsqs安装与使用无错版
项目网址:http://code.google.com/p/httpsqs/ 使用文档:http://blog.s135.com/httpsqs/ 说明:由于需要安装的东西有些多,原文可能写的有些简略 ...
- CentOS 6虚拟机安装
这篇博客已经被合并到这里了: 虚拟机安装CentOS以及SecureCRT设置[完美无错版] ====================== 下面不用看了,看上面即可 ================= ...
- CentOS 8安装JFrog Artifactory社区版解决方案
CentOS 8安装JFrog Artifactory社区版解决方案 基本概念 解决方案 基础环境 安装Artifactory 通过zip包方式安装 下载Artifactory 安装Artifacto ...
- Centos下安装mysql(二进制版)
Centos下安装mysql(二进制版) 1.下载安装包,选择相应的平台.版本,比如,选择64位Linux平台下的MySQL二进制包"Linux-Generic (glibc 2.5)(x8 ...
- 在Red Hat或CentOS上安装 MongoDB-4.x 社区版
在Red Hat或CentOS上安装MongoDB社区版 目录 本文概述 注意事项 安装MongoDB 运行MongoDB 卸载MongoDB 概述 使用本教程,使用软件包管理器在Red Hat En ...
最新文章
- 数据库连接工具datagrip较安全 代替Aqua Data Studio 6.5
- NYOJ576174问题
- Git 忽略一些文件不加入版本控制
- python中isleap_Python学习笔记(十三)系统
- linux无盘windows系统,Linux无盘启动Win2000终端
- AOP框架Dora.Interception 3.0 [1]: 编程体验
- Leetcode--136. 只出现一次的数字
- PTS + ARMS打造性能和应用诊断利器
- Android (cocos2dx 网络访问)访问权限设置
- codeforces 558E A Simple Task 线段树
- Notepad++ 使用心得
- linux的码是什么东西,在Linux内核中的UD2操作码的目的是什么?
- ArcGIS Maritime Server 开发教程(六)Maritime Service 开发技巧
- 测试开发是什么?什么是测试开发工程师?
- 巨潮资讯网-多层次资本市场信息披露平台
- 《Thinking in Java》Fourth Edition中文版笔记
- 为什么你微信公众号的阅读量越来越低了?
- 跨境电商独立站怎么去搭建
- 计算机硬件系统概念,计算机系统概念
- layui 数据表格 点击分页按钮 监听事件
热门文章
- 1012. 数字分类 java_PAT-B-1012. 数字分类(Java)
- 利用统计滤波方法去除空中漂浮物 以及去噪
- 优达学城《DeepLearning》2-4:自编码器(无监督学习算法)
- 【seaborn】(1) 数据可视化,绘图风格、布局
- 办公计算机培训方案,计算机办公软件应用培训教学计划规划方案.docx
- oc 协议 回调 静态成员_OC底层原理探究:Category、关联对象和block本质
- 基于线段的激光雷达和单目联合曲面重建
- Hololens2-OpenXR开发(一)-入门
- Keras Lambda层
- 直接线性变换(DLT)求解单应性矩阵