Gearman分佈式遠程過程處理框架

官方主頁:

http://www.danga.com/gearman/

http://gearman.org/


Gearman簡介
Gearman是 Brad Fitzpatrick 的一個作品,用 Perl 寫的任務調度程序,提供一個服務器端和多種語言的客戶端接口,包括 C/Perl/Python/Ruby 等,在 client library 本身就支持一定程度的高可靠度。

Gearman系統用來把工作委派給其他機器,分佈式的調用更適合做某項工作的機器,併發的做某項工作,在多個調用間做負載均衡,或用來在調用其它語言的函數。

Gearman的高級特性
在一個 Web 應用程序內可能有許多地方都會用到 Gearman。可以導入大量數據、發送許多電子郵件、編碼視頻文件、挖據數據並構建一箇中央日誌設施 — 所有這些均不會影響站點的體驗和響應性。可以並行地處理數據。而且,由於 Gearman 協議是獨立於語言和平臺的,所以您可以在解決方案中混合編程語言。比如,可以用 PHP 編寫一個 producer,用 C、Ruby 或其他任何支持 Gearman 庫的語言編寫 worker。
一個連接客戶機和 worker 的 Gearman 網絡實際上可以使用任何您能想象得到的結構。很多配置能夠運行多個代理並將 worker 分配到許多機器上。負載均衡是隱式的:每個可操作的可用 worker(可能是每個 worker 主機具有多個 worker)從隊列中拉出作業。一個作業能夠同步或異步運行並具有優先級。
Gearman 的最新版本已經將系統特性擴展到了包含持久的作業隊列和用一個新協議來通過 HTTP 提交工作請求。對於前者,Gearman 工作隊列保存在內存並在一個關係型數據庫內存有備份。這樣一來,如果 Gearman 守護程序故障,它就可以在重啓後重新創建這個工作隊列。另一個最新的改良通過一個 memcached 集羣增加隊列持久性。memcached 存儲也依賴於內存,但被分散於幾個機器以避免單點故障。
Gearman 是一個剛剛起步卻很有實力的工作分發系統。據 Gearman 的作者 Eric Day 介紹,Yahoo! 在 60 或更多的服務器上使用 Gearman 每天處理 600 萬個作業。新聞聚合器 Digg 也已構建了一個相同規模的 Gearman 網絡,每天可處理 400,000 個作業。Gearman 的一個出色例子可以在 Narada 這個開源搜索引擎(參見 參考資料)中找到。
Gearman 的未來版本將收集並報告統計數據、提供高級監視和緩存作業結果等。爲了跟蹤這個 Gearman 項目,可以訂閱它的 Google 組,或訪問 Freenode 上它的 IRC 頻道 #gearman。

Gearman都能用來幹什麼
Gearman 可以用在各個方面,最簡單就是在不同語言之間架起一座橋樑。比如你可能希望你的php程序調用一個c 函數,那麼用gearman就可以實現了,當然了實際你可以通過寫一個php擴展來實現同樣的工作,但是比如你要php調用java,perl,或者python那麼,Gearman就非常棒了。

Gearman另一個應用方面是負載分擔,你可以將worker放在不同的服務器(或者一些列服務器)上,比如你的php程序需要圖片轉換,但是不希望本地服務器有太多的這樣圖片轉換的進程,那麼你可以建立一系列服務器,在上面加載worker處理圖片轉換。這樣你的web服務器將不受圖片轉換的影響,同時你得到了負載均衡的功能,因爲job server會在請求到來的時候,將這個請求發給空閒的worker.同樣對於多核的服務器,你可以在同一機器上創建同樣數目的worker. 你可能擔心,job server處於一箇中心,那麼這會是一個單點的瓶頸,如果死了,會怎麼樣?對於這樣的情況,你可以運行多個job server。這樣如果一個job server down了,client和worker會自動遷移到另一臺job server上。


發佈了34 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章