Gearman是什么

2025-07-18 03:38:00

1、Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。Gearman提供了一种通用的程序框架来将你的任务分发到不同的机器或者不同的进程当中。它提供了你进行并行工作的能力、负载均衡处理的能力,以及在不同程序语言之间沟通的能力。Gearman能够应用的领域非常广泛,从高可用的网站到数据库的复制任务。总之,Gearman就是负责分发处理的中枢系统,它的优点包括: 开源:Gearman免费并且开源而且有一个非常活跃的开源社区,如果你想来做一些贡献,请点击 。 多语言支持:Gearman支持的语言种类非常丰富。让我们能够用一种语言来编写Worker程序,但是用另外一种语言编写Client程序。 灵活:不必拘泥于固定的形式。您可以采用你希望的任何形式,例如 Map/Reduce。 快速:Gearman的协议非常简单,并且有一个用C语言实现的,经过优化的服务器,保证应用的负载在非常低的水平。 可植入:因为Gearman非常小巧、灵活。因此您可以将他置入到现有的任何系统中。 没有单点:Gearman不仅可以帮助扩展系统,同样可以避免系统的失败。

2、Gearman 简介  通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用 WebService 的方式来处理此类集成问题,但不管采用何种风格的 WebService,如 RPC 风格,或者 REST 风格,其本身都有一定的复杂性。相比之下,Gearman 也能实现类似的作用,而且更简单易用。Gearman运行过程  一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。  Client:请求的发起者,可以是 C,PHP,Perl,MySQL UDF 等等。  Job:请求的调度者,用来负责协调把 Client 发出的请求转发给合适的 Work。  Worker:请求的处理者,可以是 C,PHP,Perl 等等。  因为 Client,Worker 并不限制用一样的语言,所以有利于多语言多系统之间的集成。  甚至我们通过增加更多的 Worker,可以很方便的实现应用程序的分布式负载均衡架构。

3、<?php// Reverse Client Code$client = new GearmanClient();$client->addServer();print $client->do("reverse", "Hello World!");此代码初始化Client类,配置它使用Worker与add_server(没有参数意味着使用127.0.0.1的默认端口),然后告诉ClientAPI与工作量“你好世界运行的反作用!“。函数名和参数都是完全任意的涉及到Gearman,所以你可以发送任何数据结构,是适合您的应用程序(文本或二进制)。在这一点上,Gearman ClientAPI将打包的工作为Gearman协议包发送到服务器的工作,找到一个合适的Worker,可以运行的反函数。现在让我们看一下工人代码:<?php // Reverse Worker Code $worker = new GearmanWorker(); $worker->addServer(); $worker->addFunction("reverse", function ($job) { return strrev($job->workload()); }); while ($worker->work());这段代码定义了一个函数my_reverse_function接受一个字符串并返回该字符串的反转。它被一个工作对象用来注册一个名为“反向”的函数,该函数在安装后与Client连接到同一个本地Job server上。当Job server接收要运行的job时,它会查看已注册函数名的工人列表,并将job转发给freeworkers之一。Gearman工人API将这一要求,运行功能my_reverse_function,并将结果返回,函数通过job到client的工作。正如您所看到的,client和worker API(以及job server)处理作业管理和网络通信,所以您可以专注于应用程序部分。有几种不同的方式可以运行在Gearman工作,包括异步处理背景的优先工作。详情请参见各种API的文档。

Gearman是什么
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢