gearman分布式处理系统

gearman分布式处理系统 一.Gearman介绍 Gearman架构图如下: Gearman是一个分发任务的程序架构,由三部分组成: Gearman client:提供gearman client API给应用程序调用。API可以使用C,PHP,PERL,MYSQL UDF等待呢个语言,它是请求的发起者。 Gearman job server:将客户端的请求分发到各个gearman worker的调度者,相当于中央控制器,但它不处理具体业务逻辑。 Gearman worker:提供gearman worker API给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。 Mogilefs的分布式文件系统的核心就是用gearman实现的。 这个软件的应用场景很多,比如视频网站的视频处理,分布式日志处理,电子邮件处理,文件同步处理,图片处理等等,只要是可以放开,不影响体验和响应的场景,需要并行进行大量计算和处理的程序都是可以的。Yahoo在60或更多的服务器上使用gearman每天处理600万个作业。新闻聚合器digg构建了一个相同规模的gearman网络,每天可处理400000个作业。 Gearman不但可以做为任务分发,还可以做为应用方面的负载均衡。可以让worker放在不同的一堆服务器上,也可以启动放在同一个cpu的多个核上。比如,应用视频转换程序,不希望web服务器来处理视频格式转换,这时,可以在这一堆服务器上进行任务分发,在上面加载worker处理视频格式,对外的web服务器就不会被视频转换过程影响。而且扩展方便,加一台服务器到任务调度中心,注册成worker即可,这时job server会在请求到来的时候,将请求发送给空闲的worker。还可以运行多个job server,组成ha架构,如果一个job server当掉了,client和worker会自动迁移到另一台job server上。 二.安装 【Job server---192.168.1.173】 # wget http://nchc.dl.sourceforge.net/project/boost/boost/1.45.0/boost_1_45_0.tar.gz # tar zxvf boost_1_45_0.tar.gz -C ../software/ # ./bjam # ./bjam -s HAVE_ICU=1 --prefix=/home/xuhh/boost-1.45 --includedir=/home/xuhh/boost-1.45/include --libdir=/home/xuhh/boost-1.45/lib # ./bjam install --prefix=/home/xuhh/boost-1.45 # cd /home/xuhh/boost-1.45/lib/ # cp -rf ./* /usr/lib/ # cp -rf ./* /usr/lib64/ # ln -s /home/xuhh/boost-1.45/include/boost /usr/include/boost # wget http://launchpad.net/gearmand/trunk/0.25/+download/gearmand-0.25.tar.gz # tar zxvf gearmand-0.25.tar.gz -C ../software/ # ./configure --prefix=/home/xuhh/gearmand-0.25 --with-boost=/home/xuhh/boost-1.45 # make # make install # /home/xuhh/gearmand-0.25/sbin/gearmand –d //启动gearmand服务 【worker---192.168.1.101】 Gearmand安装如上所示 # wget http://pecl.php.net/get/gearman-0.7.0.tgz # tar zxvf gearman-0.7.0.tgz -C ../software/ # phpize5 # ./configure --prefix=/usr/local/gearman-0.7.0 --with-php-config=/usr/bin/php-config5 --with-gearman=/usr/local/gearmand-0.25 # make # make install # vim /etc/php5/conf.d/gearman.ini //添加如下一行 extension=gearman.so # php -i | grep gearman //查看gearman是否加载 /etc/php5/cli/conf.d/gearman.ini, gearman gearman support => enabled libgearman version => 0.25 【client---】 安装如worker同,如上所示。 三.测试 建立worker # vi worker.php $worker= new GearmanWorker(); $worker->addServer("192.168.1.173",4730); $worker->addFunction("ttlsa", "ttlsa_function"); while ($worker->work()); function ttlsa_function($job) { return ucwords(strtolower($job->workload())); } ?> # php worker.php //worker上的应用程序持续运行,服务于客户端 建立client.php # vi client.php $client= new GearmanClient(); $client->addServer("192.168.1.173",4730); print $client->do("ttlsa", "www.ttlsa.com"); print "\n"; ?> # php client.php

转载于:https://my.oschina.net/766/blog/211288

猜你喜欢

转载自blog.csdn.net/weixin_34235105/article/details/91547564