Gearman
Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。
目录
Gearman 简介
Gearman运行过程
Gearman新版本介绍
安装 Gearman
展开
编辑本段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,可以很方便的实现应用程序的分布式负载均衡架构。
编辑本段Gearman新版本介绍
Gearman 1 月 16 日发布了 c 语言的 0.2 版本,gearman 提供了一个 work 传递其他机器,或者调用其他机器功能的框架,通过 gearman 你可以实现并行的工作,负载均衡处理,调用其他语言的函数。它可以应用在多种场合,从高可用性的 web 服务到数据库复制,换句话说,它是分布式处理的中枢神经。gearman 早期是 sixpart 实现的 perl 语言开发的版本,名字来源于“Manager”,这一框架只负责分发要做的工作,本身并不做任何实际的工作。(这点与 spread toolkit 相同 译者注)。
编辑本段安装 Gearman
安装 Gearman server and library
tar zxf gearmand-0.8.tar.gz
[1] cd gearmand-0.8 ./configure make make install
安装 Gearman PHP extension
tar zxf gearman-0.4.0.tgz cd gearman-0.4.0 phpize ./configure make make install 编辑 php.ini 配置文件加载相应模块并使之生效: extension = "gearman。so" 启动Job: gearmand -d 如果当前用户是 root 的话,则需要这样操作: gearmand -d -u root 缺省会使用 4730 端口,下面会用到。 注意:如果找不到 gearmand 命令的路径,别忘了用 whereis gearmand 确认。
编写 Worker
worker.php 文件内容如下: <?php $worker= new GearmanWorker(); $worker->addServer('127.0.0.1', 4730); $worker->addFunction('reverse', 'my_reverse_function'); while ($worker->work()); function my_reverse_function($job) { return strrev($job->workload()); } ?>
设置后台运行 work
php worker.php &
编写 Client
client.php 文件内容如下: <?php $client= new GearmanClient(); $client->addServer('127.0.0.1', 4730); echo $client->do('reverse', 'Hello World!'), "\n"; ?>
运行 client
php client.php 输出:!dlroW olleH 出于方便的考虑,Worker,Client 使用的都是PHP,但这并不影响演示,实际应用中,你完全可以通过 Gearman 集成不同语言实现的 Worker,Client。或许此时你还想了解前面提到的负载均衡功能:很简单,只要增加多个 Worker 即可,你可以按照 worker.php 的样子多写几个类似的文件,并设置不同的返回值用以识别演示效果。然后依次启动这几个 Worker 文件,并多次使用 client.php 去请求,你就会发现 Job 会把 Client 请求转发给不同的 Worker。
命令行工具
如果你觉得安装 PHP 之类的东西太麻烦的话,你也可以仅仅通过命令行工具来体验 Gearman 的功能: 启动 Worker:gearman -w -f wc -- wc -l & 运行 Client:gearman -f wc < /etc/passwd 具体可以参考官方文档,还有一些不错的 PDF。
分享到:
相关推荐
Gearman是一种分布式任务队列系统,它允许应用程序在不同的服务器之间分发工作负载,从而实现负载均衡和异步处理。本篇文章将详细讲解如何在Linux环境中搭建Gearman,包括依赖库的安装和Gearman服务的配置。 首先,...
Gearman 是一个分布式任务队列系统,它允许应用程序在多台服务器之间分发工作负载,以提高处理效率和可扩展性。在这个“Gearman C# API和示例”项目中,我们将探讨如何使用C#语言与Gearman进行交互,以及如何在...
1. Gearman的介绍和应用场景: Gearman是一个工作负载分发服务器和库,允许将工作分散到多个机器或者机器上的多个核心上进行异步处理。它在Web应用程序中处理耗时的后台任务时尤其有用,如文件上传、邮件发送、图片...
GearMAN是一个高效的分布式任务框架,最初设计用于解决Web2.0环境中图片处理等耗时任务的快速分配和执行问题。它的名字来源于“Generic Worker Manager”,意在成为一个通用的任务分发工具。GearMAN通过将任务分配给...
Gearman 是一个分布式任务队列系统,它允许应用程序在需要时分发工作负载,并在有可用资源时异步处理这些工作。在Java中,我们可以利用 Gearman 的客户端库来与 Gearman 服务器进行交互,执行分布式任务。本篇文章将...
Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。
Gearman是一个分布式任务队列系统,它允许应用程序将工作分发到多个服务器或进程,以实现负载均衡和异步处理。在本实例中,我们关注的是如何在C++环境中,利用Visual Studio 2008(VS2008)在Windows平台上创建一个...
在 Laravel 中集成 Gearman,你可以创建自定义的 Job 类来封装需要异步处理的任务,然后使用 Gearman 客户端将这些任务发送到 Gearman 服务器。下面是一些关键步骤: #### 安装扩展 首先,你需要通过 Composer ...
Gearman 是一个分布式任务队列系统,它允许应用程序在需要时分发工作并异步处理结果。这个名为 "gearman-mysql-udf-0.6.tar.gz" 的压缩包包含了一个 Gearman 与 MySQL 结合使用的用户定义函数(UDF)插件,版本为 ...
**Laravel 开发与 Gearman RPC 整合详解** 在现代Web开发中,异步任务处理和分布式计算已经成为提升系统性能的关键技术。Laravel作为PHP的流行框架,提供了丰富的工具来支持这类需求。本篇文章将深入探讨如何在...
java-gearman-service-0.6.6.zip 包,gearman分为3部分,client - server - worker,创建 java 版本的client和worker部分。 其实在gearman中,client和worker的编写不复杂,但是不同厂商提供的API是不大相同的,本...
### Gearman文档与集群计算框架的关键知识点 #### 一、Gearman概述 **Gearman**是一种分布式任务调度框架,主要用于跨机器或者同一机器上的不同进程之间分发任务。它允许开发者将任务分解并分配给一组工作节点...
Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。
Gearman是一款开源的分布式任务队列系统,它允许应用程序在多台机器上分发工作负载,从而实现异步处理和负载均衡。这个系统的重点在于解耦任务的发起者和执行者,使得系统能够灵活地扩展并提高处理能力。在本讨论中...
java实现gearman的job实现的jar包,包括gearman server,client和work客户端API
该资源包括安装Gearman时可能涉及到的软件包 具体包括gearmand、gearman、php、gperf、libevent
安装gearman 如果没有mysql客户端,需要安装mysql客户端 yum install -y libevent-devel 上传gearman.zip,解压unzip gearman.zip rpm -ivh uuid-1.5.1-3.el5.x86_64.rpm rpm -ivh libgearman-1.1.8-2.el5.x86_64...
gearman的java库有两个,一个是gearman service ,一个是gearman java,相比来说service版本更好用一些,并且网上的教程一般是用的这个版本。因此我打好了gearman service的包提供给需要的开发者使用。
1)软件资源列表:《gearmand-1.1.12.tar.gz》,《gearman-1.1.2.tgz》。 2)安装操作系统环境:CentOS-6.5,(其它linux操作系统请自行尝试)。 3)本软件安装步骤详解:...
java实现gearman的job实现的jar包,包括gearman server,client和work客户端API