zoukankan      html  css  js  c++  java
  • Gearman分布式任务处理系统(九)

    我们以前是做一个营帐系统,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代理,数据库在水平扩展上也比较容易实现。

  • 相关阅读:
    观察者模式(学习笔记17)
    web前端安全编码(模版篇)
    如何获取元素最终使用的css值
    Range在各浏览器下的问题和常见处理办法
    总结cookie的一些问题
    js 设计模式单例模式
    web端不能登录问题汇总
    多域名登录方案思考
    深入分析js中的constructor 和prototype
    由一次代码优化想到的Js 数据类型
  • 原文地址:https://www.cnblogs.com/shenming/p/3628365.html
Copyright © 2011-2022 走看看