最近Gearman 的C版本服务器代码和函数库更新到了0.9,PHP的客户端扩展也更新到了0.5.0。自从Brad 大神写出第一个Perl版本以来,Gearman似乎进入了快车道,各种语言版本更新频出,从最近的presentation 次数也能看出09年是个大力推广的年份。
最初gearman的诞生是为了LiveJournal 的图片处理,前端apache访问将任务交给gearman调度,分发给后端服务器进行图片处理和存储,然后前端得到处理后的图片访问地址:
而发展到现在,gearman在完成优秀的队列处理功能的同时更多的担负起分布式任务的职责来,像Digg 使用了45+服务器每天处理400k+的任务量,Yahoo 使用60+台服务器每天处理6M的任务量,gearman很好的诠释了容错性分布的概念。
gearman一共有三部分组成,gearmand服务器,用来任务调度和分发,clientAPI,各种语言的客户端,进行任务创建和交给gearmand,worker,就是最终执行任务的程序。
对于持久性任务队列,Brian Aker (又一神级人物) 力推libdrizzle模块来解决(自己的东西当然要推广了XD),同时也支持mysql,qgsql,sqlite等主流数据库。gearmand还支持http协议,可以直接POST数据过去进行任务处理。
最后来看看分布式得到使用吧,(好像现在才切题,都快结束了。。。)。可以多层分布,依靠程序输出,不必遵循严格的MR模型(就是不是google论文那一套啦),各种语言的api丰富可以混合使用,跨语言。
最后是一个实例,对实时apache日志进行实时的分布式处理,我觉得下半年真的可以测试一下gearman的可用性,做点什么小东西还是可以的
PS:对于"穷人"嘛,这个比较标题党了XD