您的位置:首页 > 运维架构 > 网站架构

Gearman分布式任务处理系统(九)我的架构

2013-11-15 14:04 260 查看
我们以前是做一个营帐系统,C/S架构,前台Delphi做界面,后台是是一个自己实现的内存交互的网络中间层,后台是Unix+C+Informix数据库。

由于大热所趋的B/S架构,加之硬件的更新,而Informix数据库又只能运行在Unix数据,驱动很难找,所以决定改架构。

由于我们后台只对C语言比较熟悉,对JAVA不熟,而且系统主要是面向营业厅,所以对并发要求不是特别大,因此我们决定用LAGMCP的架构。即,Linux+Apache+PHP+Gearman+C+MySQL架构。

Gearman也算是比较多的被运用于生产的队列中间件,有丰富的开发库,对于中小型系统也够用了。

我们目前的架构大体如下:



如图所示:

PHP负责客户端浏览器页面端的展示,中间通过Gearman向业务层查询数据或发送业务请求,业务层用C访问MySQL数据库。

实际应用中, 我们在MySQL前面还放了一个代理,来负责统一连接不同数据库服务器,应用层只与代理连接,这样数据库对应用层逻辑上是透明的。

Apache与Gearman间的连接方式,可以是Mod_PHP方式直接调用PHP脚本连接Gearman,也可以是PHP以FastCGI方式运行,Apache通过Mod_FastCGI模块连接PHP-FPM,PHP-FPM再连接Gearman

在Worker端,每个业务模块会起多个进程,即多个Worker,为防止Job Server单点,也可以有2台Job Server,Worker会在两台Job Server上都注册函数,每个业务模块也可能连接多个数据库,这样就会有如下一种模型:



这种架构,很适合扩充服务,增加Worker或增加DB都很容易,数据库垂直扩展很容易,借助CoBar代理,数据库在水平扩展上也比较容易实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: