Gearman简介

gearman,从名字上看叫做“齿轮工”,就是通过齿轮把不同的组件组合在一起。通常,多语言多系统之间的集成是项目开发中一个比较头疼的问题。一般会采用RPC风格或者是REST风格的WebService。但是总感觉比较麻烦。gearman就应运而生了,作为一个任务分发架构,它能够轻松的将前端的任务通过Job
Server分发给后端的Worker处理。Gearman请求的处理过程涉及三个角色:Client -> Job Server ->
Worker。

Client:请求的发起者,可以是C,PHP,Perl,MySQL
UDF等等。

Job
Server:请求的调度者,用来负责协调把Client发出的请求转发给合适的Worker。

Worker:请求的处理者,可以是C,PHP,Perl等等。

工作原理图:

工作流:

因为Client,Worker并不限制用一样的语言,所以有利于多语言多系统之间的集成。

甚至我们通过增加更多的Worker,可以很方便的实现应用程序的分布式负载均衡架构。

Gearman Client:它提供Gearman Client API给我们的应用程序调用,API可以使用是 C,PHP,Perl,MySQL UDF 等等语言,它是请求的发起者。  
Gearman Job Server:将客户端的请求分发到各个Gearman Worker的调度者,相当于中央控制器,它不负责处理具体业务逻辑。
Gearman Worker:它提供Gearman Worker API给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。

集群架构:

关于gearman的分布式任务处理:

1. 其实每一个任务处理的时间并没有降低,相反会稍稍有所增加,主要是数据在网络上传输的一些时间。

2. 前端Client(通常是web服务器)的负载降低了,但是转移到了后端Worker上。

计算不可能凭空消失,只不过从一台机器转移到了另外一台机器。

3.
同步方式的话,前端Client(通常是Web服务器)等待的时间与后端Worker的数量与当前任务数有关。如果任务数量<=Worker数量,前端Client等待的时间约等于一个任务处理的时间。

但是当任务数>=Worker数量时,就会出现某些Client等待的情况,某个Client只有等到一个空闲的Worker,才会将任务交给它进行处理。

设想一下,在任务数<=Worker数量的时候,使用gearman是可以提高响应时间的。如果采用单机话,N个任务还是在一台机器上运行,每个任务需要

现在有N个任务(Client),M个Worker,每个任务执行时间为t。如果不是用gearman的话,需要的时间为N*t,平均等待时间为N*t/2。

如果使用了gearman的话,并且N<=M,需要的时间为t,平均等待时间为t;如果N>M的话,需要的时间为(N/M)*t or
(N/M+1)*t。

Gearman简介,布布扣,bubuko.com

时间: 2024-12-21 22:32:19

Gearman简介的相关文章

利用gearman实现redis缓存mysql

环境: centos6.5 mysql5.6 gearman简介: Gearman是一个支持分布式的任务分发框架.设计简洁,获得了非常广泛的支持.一个典型的Gearman应用包括以下这些部分: Gearman Job Server:Gearman核心程序,以守护进程形式运行在后台 Gearman Client:可以理解为任务的收件员,比如我要在后台执行一个发送邮件的任务,可以在程序中调用一个Gearman Client并传入邮件的信息,然后就可以将执行结果立即展示给用户,而任务本身会慢慢在后台运

gearman实现redis缓存mysql

Gearman简介: Gearman是一个支持分布式的任务分发框架.设计简洁,获得了非常广泛的支持.一个典型的Gearman应用包括以下这些部分: 1.Gearman Job Server:Gearman核心程序,以守护进程形式运行在后台 2.Gearman Client:可以理解为任务的收件员,比如我要在后台执行一个发送邮件的任务,可以在程序中调用一个Gearman Client并传入邮件的信息,然后就可以将执行结果立即展示给用户,而任务本身会慢慢在后台运行. 3.Gearman Worker

Linux中Gearman安装与使用,分布式消息队列(CentOS-6.5:gearmand-1.1.12)

1 Gearman简介 1.1 概况 Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来在调用其它语言的函数的系统. 1.2 组成 Gearman是一个分发任务的程序架构,由三部分组成: 1)Gearman client:提供gearman client API给应用程序调用.API可以使用C,PHP,PERL,MYSQL UDF等待呢个语言,它是请求的发起者. 2)Gearman job server:将客户端的请求

gearman安装

官网:  http://gearman.org/ 一篇文章: 利用Gearman实现异步任务处理 一.问题分析 问题:在性能测试过程中,发现用户管理平台在进行图片上传时,性能不佳. 分析:经过代码分析得知,主要的瓶颈是图片上传后,还需要根据图片组件所在页面模块容器进行一系列处理:图片生成缩略图,裁剪图片,加水印等,这些处理在高并发的情况下,会消耗大量cpu资源,导致系统响应速度非常慢. 旧的处理方式: 次控端调用前台接口进行上传图片后,前台程序先上传图片,接着,进行图片压缩等处理,然后再返回结果

Gearman的使用

简介 Gearman提供了一种通用的程序框架来将你的任务分发到不同的机器或者不同的进程当中.它提供了你进行并行工作的能力.负载均衡处理的能力,以及在不同程序语言之间沟通的能力.Gearman能够应用的领域非常广泛,从高可用的网站到数据库的复制任务.总之,Gearman就是负责分发处理的中枢系统,它的优点包括 开源:Gearman免费并且开源而且有一个非常活跃的开源社区,如果你想来做一些贡献,请点击 . 多语言支持:Gearman支持的语言种类非常丰富.让我们能够用一种语言来编写Worker程序,

[Gearman] centos上Gearman的安装

一.简介 Gearman安装分2步,第1步是gearmand的安装,第2步是gearman的PHP扩展的安装. 第1步: 二.gearmand的安装 1.首先安装libdrizzle #yum install libdrizzle libdrizzle-devel 2.安装gearman(两种方法1.yum2.源码包).(c版的server) 1)yum安装 #rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/e

centos上Gearman的安装

一.简介 Gearman安装分2步,第1步是gearmand的安装,第2步是gearman的PHP扩展的安装. 第1步: 二.gearmand的安装 1.首先安装libdrizzle #yum install libdrizzle libdrizzle-devel 2.安装gearman(两种方法1.yum2.源码包).(c版的server) 1)yum安装 #rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/e

Android网络通讯简介

网络通信应该包含三部分的内容:发送方.接收方.协议栈.发送方和接收方是参与通信的主体,协议栈是发送方和接收方进行通信的契约.按照服务类型,网络通信可分为面向连接和无连接的方式.面向连接是在通信前建立通信链路,而通信结束后释放该链路.无连接的方式则不需要在通信前建立通信连接,这种方式不保证传输的质量. Android提供了多种网络通信的方式,如Java中提供的网络编程,在Android中都提供了支持.Android中常用的网络编程方式如下: 针对TCP/IP协议的Socket和ServerSock

微信红包的架构设计简介

@来源于QCon某高可用架构群整理,整理朱玉华. 背景:有某个朋友在朋友圈咨询微信红包的架构,于是乎有了下面的文字(有误请提出,谢谢) 概况:2014年微信红包使用数据库硬抗整个流量,2015年使用cache抗流量. 微信的金额什么时候算? 答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储.. 采取实时计算金额的考虑:预算需要占存储,实时效率很高,预算才效率低. 实时性:为什么明明抢到红包,点开后发现没有? 答:2014年的红包一点开就知道金额,分两次操作