php进阶编程之gearman(一)介绍篇

什么是Gearman?

Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。
Gearman提供了一个通用的应用程序框架,用于将工作转移到更适合于工作的其他机器或流程。它允许你并行工作,负载平衡处理,并在语言之间调用函数。它可用于从高可用性网站到传输数据库复制事件的各种应用程序。换句话说,它是分布式处理交流的神经系统。

Gearman的优点:

多语言 - Gearman支持的语言种类非常丰富。让我们能够用一种语言来编写Worker程序,但是用另外一种语言编写Client程序。
灵活 - 不受限于任何特定的设计模式。可以使用任何模型快速组合分布式应用程序,这些选项之一是Map / Reduce。
快速 - Gearman有一个简单的协议和接口,用C / C ++编写的优化的,线程化的服务器可以最大限度地减少应用程序开销。
嵌入式 - 由于Gearman速度快,重量轻,适用于各种尺寸的应用。以最小的开销引入现有的应用程序也很容易。
没有单点故障 - Gearman不仅可以帮助扩展系统,而且还可以通过容错的方式来实现。
消息大小没有限制 - Gearman支持最多4gig的单个消息。需要做更大的事情?没问题Gearman可以大块消息。

Gearman如何工作?

一个Gearman的应用程序由三部分组成:一个client,一个job server和一个worker。一个client负责创建要运行的工作并将其发送到job server。job server将找到可以运行作业并转发作业的worker。worke执行client请求的工作,并通过job server向client发送响应.Gearman 内部 client 和 worker之间的通信都是通过 TCP 连接来进行的。工作的流程如下图所示:

一个Gearman请求的处理过程涉及三个角色:client -> job server-> worker。
Gearman client:提供gearman client API给应用程序调用。API可以使用c,php,java,python等语言,它是请求的发起者。
Gearman job server:将client的请求分发到各个gearman worker的调度者,相当于中央控制器,但它不处理具体业务逻辑。
Gearman worker:提供gearman worker API给应用程序调用,具体负责客户端的请求,并将处理结果返回给客户端。

因为 Client,Worker 并不限制用一样的语言,所以有利于多语言多系统之间的集成。
甚至我们通过增加更多的 Worker,可以很方便的实现应用程序的分布式负载均衡架构。

Gearman工作原理及用处?

Gearman首先提供了一个多语言通讯的接口,当然还有比这个更简单有效的办法。Gearman可以将工作的负载分担到不同的机器中,如下图所示:

Gearman不但可以做为任务分发,还可以做为应用方面的负载均衡。可以让worker放在不同的一堆服务器上,也可以启动放在同一个cpu的多个核上。比如,应用视频转换程序,不希望web服务器来处理视频格式转换,这时,可以在这一堆服务器上进行任务分发,在上面加载worker处理视频格式,对外的web服务器就不会被视频转换过程影响。而且扩展方便,加一台服务器到任务调度中心,注册成worker即可,这时job server会在请求到来的时候,将请求发送给空闲的worker、而且任务还能持久化存储到mysql、redis、memcached等数据库中、防止任务及数据丢失。
gearman简单流程图如下图所示

参考资料
http://gearman.org/
http://blog.csdn.net/jiao_fuyou/article/details/16330195

sails博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • 本站由白俊遥博客程序搭建
  • Laravel-SailsBlog © 2018 www.sails.site 版权所有 ICP证:浙ICP备18032484号
  • 联系邮箱:zhimeng0818@163.com