分布式处理框架之gearman
gearman 作为一个分布式的处理框架,支持多种语言,能非常方便的进行任务的分发和处理。
下面是gearman的工作流程图:
可以看到,gearman分为worker,client,job server三个部分。worker是具体的任务处理,client进行任务的提交,由gearman提供的job server来进行任务的分发。其中Worker 和 Client的API都提供多种语言的调用。
安装方式:
1.安装job-server
debian: apt-get install gearman-job-server
centos:yum install gearmand-server
2.安装client server的python api
easy_install gearman
3.简单的demo(从网上copy的 嘿嘿)
worker.py
1 #!/usr/bin/env python2.7 2 # -*- coding: utf-8 -*- 3 # file: worker.py 4 5 import os 6 import gearman 7 import math 8 9 class CustomGearmanWorker(gearman.GearmanWorker): 10 def on_job_execute(self, current_job): 11 print "开始......" 12 print "工作中......" 13 print '结束' 14 15 return super(CustomGearmanWorker, self).on_job_execute(current_job) 16 17 def task_callback(gearman_worker, job): 18 print job.data 19 return job.data 20 21 new_worker = CustomGearmanWorker(['127.0.0.1:4730','0.0.0.0:4730']) 22 new_worker.register_task("echo", task_callback) 23 new_worker.work()
client.py
1 #!/usr/bin/env python2.7 2 # -*- coding: utf-8 -*- 3 # file: client.py 4 5 from gearman import GearmanClient 6 7 new_client = GearmanClient(['127.0.0.1:4730']) 8 current_request = new_client.submit_job('echo', 'foo') 9 new_result = current_request.result 10 print new_result
ps:worker.py中注册的多个job server 直接可以使用list
4.查看状态
telnet 127.0.0.1 4730
status 状态
workers 已注册的workers数