
Gearman
笑天居士
天下风云出我辈,一入江湖岁月催。皇图覇业谈笑中,不胜人生一场醉。
展开
-
Gearman分布式任务处理系统(三)libevent介绍
为确保具备对海量任务调度的支持能力,Gearman毫无悬念的选择libevent作为网络操作支撑库。libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据原创 2013-11-14 23:13:34 · 3879 阅读 · 0 评论 -
Gearman分布式任务处理系统(八)开发讲解
这篇重点介绍C-Lib库及client和worker的开发,以0.14版libgearman for C来讲解Client APIclient初始化&析构gearman_client_st *gearman_client_create(gearman_client_st *client)void gearman_client_free(gearman_client_st原创 2013-11-15 14:03:53 · 6200 阅读 · 0 评论 -
Gearmand和PECL extension for Gearman版本不兼容的问题
今天跟人一起排查一个问题:同一套worker代码,在旧服务器上执行正常,但是到了新的服务器上:worker起动后,运行正常,没有返回错误,但是server看不到注册的函数最开始以为是网络不通或网络什么问题,但查了一圈,最后在gearmand的log中,发现了下面的错误:FATAL [ 0] gearman_packet_unpack_header:invalid c原创 2015-12-11 12:45:41 · 1064 阅读 · 0 评论 -
gearman队列持久化引发的问题及解决方法
这篇文章主要介绍了gearman队列持久化引发的问题及解决方法,需要的朋友可以参考下本文简述了gearman用mysql持久化的方法,以及由此引发的一些问题,具体分析如下:一、gearman 创建Mysql持久化队列的方式如下:1. 登入mysql命令行,运行: create database gearman; 2. 启动gearman,命令如下:/usr/l转载 2016-01-07 19:04:38 · 2559 阅读 · 0 评论 -
Gearman分布式任务处理系统(十)后记(持续更新)
整理中。。。原创 2013-11-15 14:06:13 · 3350 阅读 · 0 评论 -
Gearman调研/测试/原理分析
http://www.phpboy.net/2014-05/40-gearman-instruction.html不错!转载 2016-01-07 19:10:49 · 1324 阅读 · 0 评论 -
Gearman今天突然出问题,Timeout occured when calling bind() for 0.0.0.0:4730
跟踪里,突然就出出这个错误gearman起不来,4730监测不了最好是停掉了所有和4730相关的进程,才起来不知道怎么导致的?我还不知道原因,继续监控原创 2016-02-16 15:37:08 · 2162 阅读 · 2 评论 -
利用iptables为gearman增加访问规则
Gearman很好用,但是没有权限管理,如果gearman处于公网上,就比较危险可以利用iptables为其增加访问规则,限制只有本机或某些特定服务器IP才能访问gearman增加IP规则,-I是插入,不指令位置默认是插入在最顶端 iptables -I INPUT -p tcp –dport 4930 -j DROP iptables -I INPUT -s 172.16.18.0/24 -原创 2015-09-30 08:37:25 · 1051 阅读 · 0 评论 -
详解Gearman Job中的Unique
PHP GearmanClientGearmanClient客户端库会自动生成Unique,因此即使完全相同的请求内容,Job Server也会接收处理,比如下面两个客户端的调用,那么test队列中的任务数为2# 测试时先停止worker中函数test的处理client1->do("test", "test");client2->do("test", "test");如果,完全相同的请求,要原创 2016-05-16 21:48:26 · 1435 阅读 · 0 评论 -
用HTTP方式调用gearman任务处理
应用场景:开启gearman http监听功能,让前端以web api方式调用gearman job起用方式:在gearmand的起动参数中加上:/usr/local/gearman/sbin/gearmand \-l /usr/local/gearman/log/trace.log \--verbose INFO -p 4730 -u root -d -t 4 \--http-port=8080 \-r http--原创 2014-07-24 13:10:34 · 3067 阅读 · 0 评论 -
Gearman分布式任务处理系统(四)Gearman协议
Gearman协议工作于TCP之上,默认使用4730端口。它之前使用端口7003,但与AFS的端口范围冲突,4730端口是由IANA分配的。client和jobserver间,以及worker与jobserver间存在通信交互,这两种情况下的通信协议都是由请求包和响应包组成。所有发送到jobserver的包都认为是请求,所有由jobserver发送的包都认为是响应。一种简单的配置例子是这样的:转载 2013-11-14 23:23:04 · 4221 阅读 · 0 评论 -
Gearman分布式任务处理系统(六)跨多种环境部署
跨多种环境部署 Gearman现代计算环境最大的挑战之一就是工作分布和计算资源的有效利用。目前的一般趋势是,便宜且轻松地安装一台强大的机器来执行比较直观和简单的任务,但是这可能得不到最佳的总体性能和机器的最佳利用。相反,很多应用程序现在发现自己需要执行一些相当小的操作,但是可能要执行成千上万次,不需要一台强大的机器。随着计算场(farm)的增大,有时候需要跨所有机器同时执行一个动作或操原创 2013-11-15 09:33:07 · 2981 阅读 · 0 评论 -
Gearman分布式任务处理系统(九)我的架构
Gearman分布式处理系统(九)我的架构原创 2013-11-15 14:04:47 · 3390 阅读 · 0 评论 -
Gearman分布式任务处理系统(二)扩展应用
对于绝大多数发展中等的web 2.0网站来说,LAMP结构已经不能满足现在的需要了,新的架构组合是GLAMMP,G=Gearman(分布式远程过程处理),M=Memcached(高性能的分布式的内存对象缓存系统)。Gearman的高级特性在一个 Web 应用程序内可能有许多地方都会用到 Gearman。可以导入大量数据、发送许多电子邮件、编码视频文件、挖据数据并构建一个中央日志设施 — 所原创 2013-11-14 23:03:59 · 7102 阅读 · 1 评论 -
用Gearman做队列来实现消息推送
前面有一篇文章,是Nginx+Lua来实现推送的方式,这里我们换一种作法,用Nginx+Gearman作队列来实现。此方案的主要思路是这样的:客户端不会频繁的轮询服务端,而是对服务端发起一个长连接,服务端通过阻塞方式读取Gearman队列数据,一旦发现新数据便给客户端发出响应,这次交互便结束了。客户端处理好新数据后再重新发起一个长连接,如此周而复始。MySQL安装gearm原创 2013-12-03 16:31:30 · 4677 阅读 · 0 评论 -
LAMP架构演进到LAMPGC,再演进到LNMLGC(linux+nginx+mysql+lua+gearman+C)
在这里重点介绍nginx怎样调用gearman中间件nginx在高并发异步调用的性能够强,这地球人都知道了lua的协程,也可以实现并发的异步调用把这两个结合起来看看效果先看下apache+php调用gearman的情况,同步一调用一gearman任务,假如这个任务要3S钟,那么当前这个apache的httpd进程就会被阻塞,它无法为其它客户端服务了再来看看nginx+lua调用gearman的实现:nginx同样是一个worker,worker进程里通过lua协程调用gearman任务,即原创 2014-06-30 10:23:20 · 4180 阅读 · 0 评论 -
利用Gearman实现并发查询(Multi-Query)
这个例子是想从数据库查询出几个结果集,一般的做法是,一个接一个的发送查询,然后汇总结果进行输出。下面我们利用Gearman的gearman_client_run_tasks实现并发的查询,gearman_client_run_tasks接口可以一次性的提交多个任务,然后在callback函数中异步的处理结果。原创 2014-05-27 09:12:30 · 2424 阅读 · 0 评论 -
Gearman分布式任务处理系统(七)问题研究与性能优化
Gearman工作流程细解一次正常的Gearman任务执行流程如上图所示:worker向Gearman Server注册自身可以执行的功能 worker尝试获取一个任务 server通告worker暂无任务 worker通告server:“我先睡会,有活干时再叫醒我” client向server发起任务请求 server唤醒可以完成这项工作的worker(可能会唤醒多个原创 2013-11-15 13:12:18 · 7809 阅读 · 0 评论 -
Gearman分布式任务处理系统(一)基本介绍
Gearman介绍Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统。通常,多语言多系统之间的集成是个大问题,一般来说,人们多半会采用 WebService 的方式来处理此类集成问题,但不管采用何种风格的WebService,如 RPC 风格,或者 REST 风格,其本身都有一定的复原创 2013-11-14 21:58:19 · 15902 阅读 · 0 评论 -
查找gearman非法注册函数进程
使用gearman时,由于gearman没有权限控制,导致任何能连接到job server的程序都能注册函数,尤其在开发阶段,可能有来自不同机器上的程序连接了job server注册了一些测试函数。当使用gearadmin –status查看query status时,会发现一些不知所云的注册函数,如:test 0 0 1那怎样知道这个test函数是哪个程序注册的呢?原创 2015-09-23 14:05:53 · 1289 阅读 · 0 评论