以下内容来自www.geraman.org
1.Gearman介绍
Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。Gearman是一个分发任务的程序框架,可以用在各种场合,Gearman的提供了一个通用框架,它可以让你做的工作并行,负载平衡处理,并调用函数语言之间。它可用于在各种各样的应用中,从高可用性的Web站点的传输数据库复制事件,换句话说,它是分布式处理的中枢神经。
2.Gearman的优势
(1)开源 - 它是免费的!Gearman有一个活跃的开源社区,很容易涉足如果您需要帮助或想贡献。
(2).跨语言-有利于多语言多系统之间的集成。PHP/Perl/Java/C++可以融合在一起,用Perl实现的邮件发送功能PHP也能自由调用,也可以使用Perl调用另一台服务器上用C++编写的程序的一个函数。
(3).灵活 - 不依赖于任何特定的设计模式。您可以快速地放在一起的分布式应用程序使用任何你选择的模型,;例如Map / Reduce。
(4).速度快 - Gearman的一个新的优化服务器C到您的应用程序的开销降到最低,有一个简单的协议和接口。
可嵌入 - ,由于Gearman是快速,轻巧,它是非常适合各种规模的应用。利用了c最小化的减少了系统开销。
(5).Gearman的无单点故障 - 不仅有利于规模的系统,但在容错的方式可以做到这一点
3.Gearman是如何工作的
Gearman的应用程序由三部分组成:一个客户端,一个工人,作业服务器。
客户端负责创建一个作业来运行,并把它发送到作业服务器。
作业服务器会找到一个合适的工人,可以运行的工作和转发工作。
工人执行工作由客户端请求,并通过作业服务器向客户端发送一个响应。
Gearman的提供客户端和工人的API,您的应用程序调用的Gearman作业服务器(也被称为gearmand)谈,所以你不需要处理网络或映射的就业机会。在内部,Gearman的客户端和工人的API沟通与作业服务器使用TCP套接字。为了解释Gearman是如何工作的更多细节,让我们来看看一个简单的应用程序,将一个字符串中的字符的顺序颠倒。例如在PHP中,虽然其他的API将看上去非常相似。
我们开始写是负责送工作,并等待结果,所以可以把它打印出来的客户端应用程序。为此,它通过使用Gearman的客户端API,发送一些数据相关的一个函数名,在这种情况下,“反向”功能.
(1). 客户端请求代码:
# Reverse Client Code
$client= new GearmanClient();
$client->addServer();
print $client->do("reverse", "Hello World!");
(2).worker端代码
# Reverse Worker Code
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("reverse", "my_reverse_function");
while ($worker->work());
function my_reverse_function($job)
{
return strrev($job->workload());
}
(3).具体的工作流程
4.Gearman的另一个途径就是可以用一个单独的机器(或机器集群),更适合做的工作是把工人代码。说你的PHP Web应用程序想要做图像转换,但处理Web服务器的机器上运行它,这实在是太多了。相反,你可以运送图像一组单独的worker机器做转换,这样的负载不影响您的Web服务器的性能和其他的PHP脚本。通过这样做,你还可以得到一个自然形式的负载平衡,因为作业服务器只发送新的就业机会闲散人员。如果一个给定的机器上运行的所有工人都很忙,你不必担心被送到那里的新的就业机会。这使得规模多核服务器很简单:你有16个内核的辅助计算机上?启动你的工人16个实例(或者更多,如果他们没有CPU限制)。这也是扩大你的工作池,只是引导他们,安装辅助代码,将它们连接到现有的作业服务器无缝地添加新的机器。
相关推荐
Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的 任务分布非常 简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于...
Gearman 是一个分布式任务队列系统,它允许应用程序在需要时分发工作负载,并在有可用资源时异步处理这些工作。在Java中,我们可以利用 Gearman 的客户端库来与 Gearman 服务器进行交互,执行分布式任务。本篇文章将...
总之,Gearman提供了一种灵活的框架,用于在分布式环境中处理任务,通过合理配置和使用,能够有效地提高系统的并发处理能力和响应速度。搭建和维护Gearman环境需要对Linux系统、网络编程以及相关库有一定的理解,但...
**Gearman**是一种分布式任务调度框架,主要用于跨机器或者同一机器上的不同进程之间分发任务。它允许开发者将任务分解并分配给一组工作节点(worker),从而实现高效的任务处理。Gearman的核心优势在于其灵活性和可...
Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。
总结一下,这个"Gearman C# API和示例"项目提供了一个C#开发者与Gearman服务交互的基础框架,涵盖了客户端和工作者的实现。通过学习和使用这个项目,你可以更好地理解和利用Gearman在分布式系统中的优势,提升你的...
Gearman 是一个跨语言的、通用的任务调度框架,它可以将任务分发到多台服务器上,使得大规模应用可以有效地利用系统资源。 ### Gearman 的核心概念 1. **Worker**:工作进程,负责接收并执行 Gearman 服务器分发的...
G2 - Gearman服务器的一个GO现代化实现
GearMAN是一个高效的分布式任务框架,最初设计用于解决Web2.0环境中图片处理等耗时任务的快速分配和执行问题。它的名字来源于“Generic Worker Manager”,意在成为一个通用的任务分发工具。GearMAN通过将任务分配给...
这个库提供了一个Laravel服务提供者和服务容器绑定,使得在Laravel框架内使用Gearman变得更加方便。 ** 安装与配置 ** 首先,你需要通过Composer安装`mhlavc/gearman`库: ```bash composer require mhlavc/...
Gearman是一款开源的分布式任务队列系统,它允许应用程序在多台机器上分发工作负载,从而实现异步处理和负载均衡。这个系统的重点在于解耦任务的发起者和执行者,使得系统能够灵活地扩展并提高处理能力。在本讨论中...
Gearman是一个分布式任务队列系统,它允许应用程序将工作分发到多个服务器或进程,以实现负载均衡和异步处理。在本实例中,我们关注的是如何在C++环境中,利用Visual Studio 2008(VS2008)在Windows平台上创建一个...
Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。
Gearman是一个工作负载分发服务器和库,允许将工作分散到多个机器或者机器上的多个核心上进行异步处理。它在Web应用程序中处理耗时的后台任务时尤其有用,如文件上传、邮件发送、图片处理等。 2. PHP Gearman扩展...
Gearman 是一个分布式任务队列系统,它允许应用程序在需要时分发工作并异步处理结果。这个名为 "gearman-mysql-udf-0.6.tar.gz" 的压缩包包含了一个 Gearman 与 MySQL 结合使用的用户定义函数(UDF)插件,版本为 ...
gearman的java库有两个,一个是gearman service ,一个是gearman java,相比来说service版本更好用一些,并且网上的教程一般是用的这个版本。因此我打好了gearman service的包提供给需要的开发者使用。
java实现gearman的job实现的jar包,包括gearman server,client和work客户端API
java-gearman-service-0.6.6.zip 包,gearman分为3部分,client - server - worker,创建 java 版本的client和worker部分。 其实在gearman中,client和worker的编写不复杂,但是不同厂商提供的API是不大相同的,本...
该资源包括安装Gearman时可能涉及到的软件包 具体包括gearmand、gearman、php、gperf、libevent
Gearman是一个分布式任务队列系统,它允许应用程序在任何地方运行任务,而无需关心它们在哪里运行或如何运行。Gearman-Java是Java语言对Gearman的客户端库,它提供了与Gearman服务器通信的能力,用于分发工作负载...