利用Gearman,搭建異步分佈式計算平臺

Gearman的介紹php

主頁在http://gearman.org/index.php, 它的主要優勢有:服務器

  1. 實現了異步計算。能夠將比較耗時的計算分配到分佈式計算集羣來減小站點服務器的壓力和用戶的等待。例如passport裏的郵件發送/頭像上傳裁減/國內外數據分離請求等等。
  2. 跨語言,有利於多語言多系統之間的集成。PHP/Perl/Java/C++能夠融合在一塊兒,用Perl實現的郵件發送功能PHP也能自由調用,也能夠使用Perl調用另外一臺服務器上用C++編寫的程序的一個函數。
  3. 便於擴展和實現負載均衡。能夠經過增長worker的數量來提供更好的性能,在其中一臺出現問題的時候可以由其餘的worker來完成任務。
  4. 開源
  5. 快速: 利用了c最小化的減小了系統開銷。

Gearman的安裝配置負載均衡

1.安裝Gearman server and library:異步

wget http://launchpad.net/gearmand/tr ... gearmand-0.8.tar.gz tar zxf gearmand-0.8.tar.gz cd gearmand-0.8 ./configure make make install分佈式

2.安裝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 make make install性能

3.編輯php.ini配置文件加載相應模塊並使之生效:.net

extension = "gearman.so"調試

4.啓動Job:server

gearmand -d

若是當前用戶是root的話,則須要這樣操做:

gearmand -d -u root

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

以調試的方式啓動:

gearmand -vv

5.編寫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 worker.php &

6.編寫Client:

client.php文件內容以下:

<?php $client= new GearmanClient(); $client->addServer('127.0.0.1', 4730); echo $client->do('reverse', 'Hello World!'), "/n"; ?>

運行client:

php client.php

輸出:!dlroW olleH

相關文章
相關標籤/搜索