SVN+Gearman构建异步式代码分布系统

  • A+
所属分类:Gearman

1.场景说明

任何一种方法都是为了解决或改进现有的问题。随着SVN服务器版本库增多,代码量增多,随之而来的就面临着SVN服务器压力的问题。为了开发测试,一般在每个版本库的hooks下配置个钩子,来实现代码自动同步,如:http://www.ttlsa.com/html/1047.html

这种方案是客户端每一次commit操作触动post-commit脚本执行,将代码update到本地后,再rsync到测试环境下。这存在潜在的问题,如磁盘IO,客户端提交时间(监控改变的目录,仅仅对改变的目录进行update操作比对整个项目进行update操作快)。

2.思路说明

将checkout/update操作转移到其他服务器上进行,比如测试环境下。客户端每一次commit操作仅仅是发送一次update操作命令,交由相关的服务器去完成你所要进行的操作。

可以采用SVN+Gearman来实现上述功能,解决面临的问题。

3.环境设置

a.SVN安装以及相关内容参见: http://www.ttlsa.com/html/category/os/web-application/svn

b.Gearman Server安装,PHP扩展以及相关内容参见: http://www.ttlsa.com/html/category/os/distributed-software-systems/distributed-processing-systems/gearman-distributed-processing-systems

c.Peal相关模块安装,如Gearman::Worker,Gearman::Client,JSON等等

4.实现步骤

a). Gearman Worker如下:(在测试服务器下运行)

b). Gearman Client如下:(每个项目hoods下)

注意:

a. Gearman Client是使用php来实现的。 Perl添加异步任务不成功,会一直等待worker响应。

b. 要添加异步任务。如果添加同步任务的话,会阻塞的。

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: