分布式任務分發框架Gearman教程和PHP實現實例
來自: http://blog.csdn.net//clh604/article/details/19706827
1、Gearman介紹和使用場景
Gearman是一個分發任務的程序框架,可以用在各種場合,與Hadoop相 比,Gearman更偏向于任務分發功能。它的任務分布非常簡單,簡單得可以只需要用腳本即可完成。Gearman最初用于LiveJournal的圖片 resize功能,由于圖片resize需要消耗大量計算資源,因此需要調度到后端多臺服務器執行,完成任務之后返回前端再呈現到界面。

通常,多語言多系統之間的集成是個大問題,一般來說,人們多半會采用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,可以很方便的實現應用程序的分布式負載均衡架構。
一個Gearman請求的處理過程涉及三個角色:Client -> Job -> Worker。
Client:請求的發起者,可以是C,PHP,Perl,MySQL UDF等等。
Job:請求的調度者,用來負責協調把Client發出的請求轉發給合適的Work。
Worker:請求的處理者,可以是C,PHP,Perl等等。
因為Client,Worker并不限制用一樣的語言,所以有利于多語言多系統之間的集成。
甚至我們通過增加更多的Worker,可以很方便的實現應用程序的分布式負載均衡架構。
2、Gearman job分發服務端安裝
安裝Gearman server and library:
wget http://launchpad.net/gearmand/trunk/0.8/+download/gearmand-0.8.tar.gz
tar zxf gearmand-0.8.tar.gz
cd gearmand-0.8
./configure
sudo make
sudo make install
中間可能會遇到些問題:
在./configure的時候,可能會出現缺少libraries的情況,一般是缺少libevent和uuid這兩個開發包,安裝之。。。
sudo apt-get install libevent-dev
sudo apt-get install uuid-dev
安裝完成后再重新配置安裝,安裝完成后執行
sudo ldconfig
wget http://launchpad.net/gearmand/trunk/0.8/+download/gearmand-0.8.tar.gz
tar zxf gearmand-0.8.tar.gz
cd gearmand-0.8
./configure
sudo make
sudo make install
中間可能會遇到些問題:
在./configure的時候,可能會出現缺少libraries的情況,一般是缺少libevent和uuid這兩個開發包,安裝之。。。
sudo apt-get install libevent-dev
sudo apt-get install uuid-dev
安裝完成后再重新配置安裝,安裝完成后執行
sudo ldconfig
3、Gearman Client和Worker端PHP實現實例
安裝Gearman PHP extension:
wget http://pecl.php.net/get/gearman-0.4.0.tgz
tar zxf gearman-0.4.0.tgz
cd gearman-0.4.0
phpize
./configure
sudo make
sudo make install
中間可能遇到的問題:
找不到phpize命令,phpize在php開發包中,所以要先安裝php5-dev
sudo apt-get install php5-dev
安裝完后,就可以在源碼目錄中執行phpize生成相關安裝配置信息,接著執行后面的./configure等
make install后,它告訴你一個目錄,生成的gearman.so就在那里。
根據需要考到相應PHP的擴展目錄里(因為我直接用系統默認安裝的php,它自動生成就在擴展中)
接下來修改php.ini以使php加載該模塊:
php --ini
wget http://pecl.php.net/get/gearman-0.4.0.tgz
tar zxf gearman-0.4.0.tgz
cd gearman-0.4.0
phpize
./configure
sudo make
sudo make install
中間可能遇到的問題:
找不到phpize命令,phpize在php開發包中,所以要先安裝php5-dev
sudo apt-get install php5-dev
安裝完后,就可以在源碼目錄中執行phpize生成相關安裝配置信息,接著執行后面的./configure等
make install后,它告訴你一個目錄,生成的gearman.so就在那里。
根據需要考到相應PHP的擴展目錄里(因為我直接用系統默認安裝的php,它自動生成就在擴展中)
接下來修改php.ini以使php加載該模塊:
php --ini