centos 6.2上安裝gearman

centos 6.2上安裝gearman

官網:http://gearman.org/

跨多種環境部署 Gearman
http://www.ibm.com/developerworks/cn/opensource/os-gearman/index.html
利用開源的Gearman框架構建分佈式圖片處理平臺-張宴
http://blog.s135.com/dips/
監控:
https://github.com/yugene/Gearman-Monitor

一、簡介
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 (gearmand) -- 172.16.1.183]
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/epel-release-6-5.noarch.rpm
    #yum install -y gearmand
    2)源碼包安裝
    #cd /opt/build/
    #wget https://launchpad.net/gearmand/trunk/0.34/+download/gearmand-0.34.tar.gz
    #tar zxf gearmand-0.34.tar.gz
    #cd gearmand-0.34
    #./configure
    #make && make install
3.啓動gearman服務
    1)yum安裝方式
    #/etc/init.d/gearmand start
    2)源碼包安裝方式
    #/opt/build/gearmand-0.34/sbin/gearmand -d

    #gearmand -vvv -u root
    INFO Starting up
    INFO Listening on :::4730 (6)
    INFO Creating wakeup pipe
    INFO Creating IO thread wakeup pipe
    INFO Adding event for listening socket (6)
    INFO Adding event for wakeup pipe
    INFO Entering main event loop

worker&&client以php方式
[worker --  172.16.1.180]
安裝gearmand如上所示

安裝 Gearman PHP extension
1.下載gearman-0.8.0.tgz並安裝
    #cd /opt/build/
    #wget http://pecl.php.net/get/gearman-0.8.0.tgz
    # yum install -y libgearman-devel.x86_64
    # yum install -y re2c
    #tar zxf gearman-0.8.0.tgz
    #cd gearman-0.8.0.tgz
    #phpize
    # ./configure
    # make && make install
2.編輯php.ini配置文件加載相應模塊並使之生效
    # vim /etc/php.ini
    extension = "gearman.so"
3.查看gearman.so模塊是否加載
    # php --info | grep gearman
    gearman
    gearman support => enabled
    libgearman version => 0.14
    PWD => /opt/build/gearman-0.8.0
    _SERVER["PWD"] => /opt/build/gearman-0.8.0
    # php -m | grep gearman
    gearman
4.啓動job
gearmand -d
如果當前用戶是 root 的話,則需要這樣操作:
gearmand -d -u root
缺省會使用 4730 端口,下面會用到。
    注意:如果找不到 gearmand 命令的路徑,別忘了用 whereis gearmand 確認

[client -- 172.16.1.181]
    安裝如work同。如上所示。

三、測試:
[Job Server (gearmand) -- 172.16.1.183]
啓動gearmand

以命令行工具來驗證gearman的功能
啓動 Worker:gearman -h 172.16.1.183 -w -f wc -- wc -l &
運行Client:gearman -h 172.16.1.183 -f wc < /etc/passwd
42
可以看到驗證成功。

以php驗證gearman的功能
編寫 Worker
worker.php 文件內容如下:
<?php
$worker= new GearmanWorker();
$worker->addServer('172.16.1.183', 4730);
$worker->addFunction('reverse', 'my_reverse_function');
while ($worker->work());
function my_reverse_function($job) {
return strrev($job->workload());
}
?>
設置後臺運行 work
php worker.php &
編寫 Client
client.php 文件內容如下:
<?php
$client= new GearmanClient();
$client->addServer('172.16.1.183', 4730);
echo $client->do('reverse', 'Hello World!'), "\n";
?>
運行 client
php client.php
輸出:!dlroW olleH
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章