计算机科学

首页 > 计算机科学

Gearman

Gearman
Gearman80 title.gif
原作者 布莱德·菲兹派翠克
开发者 Brian Aker, Eric Day
初始版本 2009年1月8日 (2009-01-08)
稳定版本
稳定版本
1.1.14
(2016年11月17日,​21个月前​(2016-11-17
编程语言 C, Shell, Perl, PHP, Python, Java, MySQL, JMS, C#, .NET, Go
操作系统 Linux, Windows (no server)
语言 英语
许可协议 BSD授权条款
网站 gearman.org

Gearman [1] 是一套用来把程式需求委派给机器,提供通用的程序框架来将任务分发在机器运算。它同时具备并行工作的能力、负载均衡处理的能力,以及在不同程序语言之间沟通的能力。

目录

  • 1 Gearman 特点
  • 2 Gearman 运作原理
    • 2.1 Client
    • 2.2 Job Server
    • 2.3 Work
    • 2.4 Message Queue
  • 3 Job Server 负载方式
    • 3.1 同步 (Synchronous)
    • 3.2 异步 (Asynchronous)
  • 4 参考资料

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 现在进度。

参考资料

  1. ^ What is Gearman
  2. ^ Message Queue 互联网档案馆的存档,存档日期2014-01-31.
  • Instant Parallel Processing with Gearman

下一篇:BPF
相关推荐