【Gearman学习笔记】分布式处理入门
2013-12-24 15:35
267 查看
1.首先,确保你已经安装了gearmand环境并且语言绑定(language binding)已经生效。
2.涉及到的各个部分:
Server
The server, gearmand, will coordinate clients and workers ensuring that calls from the clients are delivered to workers and that results from workers are sent back to the client.
gearmand作为我们的服务端,使client和worker协同工作,确保从client端发过来的请求能够传送到worker,同时使经过worker处理过的请求结果能够返回给client。
Client
A process which has a blob of data to process, a known function which can process it, and a desire to get the processed results back. In our case, the client wants a string reversed.
Client就是一个有很多待处理数据的进程,它能够被其他程序处理并得到处理后的返回结果。在我们的例子中,client端的需求是使一个字符串翻转。
Worker
A process which connected to the server and offers to process function calls. In this example, the client can reverse strings.
Worker是一个连接到server的进程,server端接收到client的请求后,把任务分派给worker,worker对请求作出处理。在我们的例子中,worker要做的任务是翻转一份字符串。
3.client.php(本文使用PHP作为客户端):
4.worker.py(本文使用Python作为worker):
5.测试:
测试环境配置:
Linux3.5.7-gentoo #1 x86_64 Intel(R) Xeon(R) CPU E5645 @ 2.40GHz GenuineIntel GNU/Linux
因为我在gentoo server下面,没法开两个terminal,所以,要先把worker.py作为后台进程运行:
然后,用php CLI运行client.php:
可以看到,在gearman的协调下,worker完成一次client的请求。
6.英文出处:http://gearman.org/examples/reverse/
7.【更新】
上面的例子讲的是同步机制,这还体现不出gearman的强大,下面是doBackground()的异步机制:
2.涉及到的各个部分:
Server
The server, gearmand, will coordinate clients and workers ensuring that calls from the clients are delivered to workers and that results from workers are sent back to the client.
gearmand作为我们的服务端,使client和worker协同工作,确保从client端发过来的请求能够传送到worker,同时使经过worker处理过的请求结果能够返回给client。
Client
A process which has a blob of data to process, a known function which can process it, and a desire to get the processed results back. In our case, the client wants a string reversed.
Client就是一个有很多待处理数据的进程,它能够被其他程序处理并得到处理后的返回结果。在我们的例子中,client端的需求是使一个字符串翻转。
Worker
A process which connected to the server and offers to process function calls. In this example, the client can reverse strings.
Worker是一个连接到server的进程,server端接收到client的请求后,把任务分派给worker,worker对请求作出处理。在我们的例子中,worker要做的任务是翻转一份字符串。
3.client.php(本文使用PHP作为客户端):
<?php // Create our client object $client = new GearmanClient(); // Add a server $client->addServer(); // by default host/port will be "localhost" & 4730 echo "Sending job\n"; // Send reverse job $result = $client->doNormal("reverse", "Hello!"); if ($result) { echo "Success: $result\n"; }
4.worker.py(本文使用Python作为worker):
import gearman gm_worker = gearman.GearmanWorker(['localhost:4730']) def task_listener_reverse(gearman_worker, gearman_job): print 'Reversing string: ' + gearman_job.data return gearman_job.data[::-1] # gm_worker.set_client_id is optional gm_worker.set_client_id('python-worker') gm_worker.register_task('reverse', task_listener_reverse) # Enter our work loop and call gm_worker.after_poll() after each time we timeout/see socket activity gm_worker.work()
5.测试:
测试环境配置:
Linux3.5.7-gentoo #1 x86_64 Intel(R) Xeon(R) CPU E5645 @ 2.40GHz GenuineIntel GNU/Linux
因为我在gentoo server下面,没法开两个terminal,所以,要先把worker.py作为后台进程运行:
然后,用php CLI运行client.php:
可以看到,在gearman的协调下,worker完成一次client的请求。
6.英文出处:http://gearman.org/examples/reverse/
7.【更新】
上面的例子讲的是同步机制,这还体现不出gearman的强大,下面是doBackground()的异步机制:
http://gearman.org/examples/send-emails/
相关文章推荐
- 分布式服务框架学习笔记9 ActiveMQ入门2 管理、生产者/消费者模式
- Docker 入门学习笔记三:Docker独立IP及容器互联(待处理)
- 分布式服务框架学习笔记7 Thrift入门试用
- (学习笔记)spring框架入门之配置bean(处理属性中有集合的情况)
- 分布式服务框架学习笔记8 ActiveMQ入门2 发布/订阅模式
- 操作系统精髓与设计原理学习笔记十:分布式处理、客户/服务器和集群系统
- 分布式服务框架学习笔记8 ActiveMQ入门使用
- java事务学习笔记(八)--分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)
- Spring入门学习笔记(3)——事件处理类
- Hadoop学习笔记-入门伪分布式配置(Mac OS,0.21.0,Eclipse 3.6)
- OpenCV入门_学习笔记_读取、显示、处理图像
- Matlab 图像处理入门学习笔记—1.图片格式转换
- Unity Shader入门精要学习笔记 - 第12章 屏幕后处理效果
- 学习【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀----思维导图笔记
- 学习php笔记 字符串处理
- 批处理学习笔记01
- 学习笔记之JavaIO中的文件处理——File和RandomAccessFile
- JNI 学习笔记(三)-- JNI访问数组、引用、异常处理、缓存策略
- C++ Primer 学习笔记:关联容器入门 set && map
- Scala学习笔记——入门