Gearman

维基百科,自由的百科全书
跳转至: 导航搜索
Gearman
Gearman80 title.gif
原作者 布萊德·菲茲派翠克
開發者 Brian Aker, Eric Day
初始版本 2009年1月8日  (2009-01-08)
穩定版本 1.0.1(2012年11月8日,2年前2012-11-08
编程语言 C, Shell, Perl, PHP, Python, Java, MySQL, JMS, C#, .NET, Go
操作系统 Linux, Windows (no server)
语言 英語
许可协议 BSD授權條款
網站 gearman.org

Gearman [1] 是一套用來把程式需求委派給機器,提供通用的程序框架來將任務分發在機器運算。它同時具備並行工作的能力、負載均衡處理的能力,以及在不同程序語言之間溝通的能力。

Gearman 特點[编辑]

  • Open Source: 屬於開放原始碼,同時,建立社群提供問題的協助平台。
  • Multi-language: 多國語言介面。
  • Flexible: 靈活,不需要設計其他模式,可以快速將應用程序分佈運作。
  • Fast: 它有簡單的協定,減少執行沒有相關的時間。
  • Embeddable: 嵌入式,快速與輕量,處理各種應用程序。
  • No single point of failure: 不僅可以將系統模組化,也能容錯方式進行。
  • No limits on message size: 支援單一訊息 4 gig 大小。
  • Worried about scaling: 各平台行皆有使用經驗,e.g. Tumblr, Yelp, Etsy, etc.

Gearman 運作原理[编辑]

Gearman 主要分成三個部份,需求的處理過程涉及三個角色:Client -> Job -> Worker。

Client[编辑]

  • Client: 負責建立一個工作,發送需求 (application) 給 Job Server,而 Job Server 會去找適合的 Worker 去轉發工作。

Job Server[编辑]

  • Job Server: 瞭解 Client 端的需求,並查看哪個機器可以處理這項要求,在系統裡它通常會是個 Daemon。

Work[编辑]

  • Worker: Worker 通過 Job Server 的分派,開始執行 Client 端的工作。

Message Queue[编辑]

  • 執行 Message Queue [2]服務的 Job Server 可以是多台伺服器組成,也就是分散式架構,在 Job Server 上執行 Worker 程式。
  • 這些 Worker 程式會一直循環地等候,直到 Job Server 呼叫它執行工作。
  • Client 端發送出需求之後,會將需要的資料及動作記錄在 Job Server 上,這時 Job Server 會查看是否有空閒並符合需求的 Worker。
  • 在 Worker 結束工作後,會發送通知給 Job Server ,這時 Job Server 就會視狀況把結果回傳給 Client。
  • Client 端不需等候需求的執行結果,可以直接繼續執行其他動作。

Job Server 負載方式[编辑]

  • 當 Client 可能同時發出多個需求給 Job Server,由 Message Queue 接手進行佇列。
  • 而 Job Server 開始處理多個需求,若其中一個發生問題,可以 Failover 到其他的機器。
  • 同時,Worker 會將多個需求一起進行運算,再看是同步或非同步模式,回傳結果給 Client。

同步 (Synchronous)[编辑]

  • 同步(Synchronous) 是指 Client 將需求 (Application) 丟給 Gearmand。
  • 由 Gearmand 分派 Job 給各 Worker 去處理。
  • 並同步 Response 回傳給 Gearmand 告訴 Client 現在進度。

非同步 (Asynchronous)[编辑]

  • 非同步 (Asynchronous) 是指 Client 將需求 (Application) 丟給 Gearmand。
  • 由 Gearmand 分派 Job 給各 Worker 去處理。
  • Worker 處理完畢後,才會將結果回傳給 Gearmand 告訴 Client 現在進度。

参考资料[编辑]