IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

终于把搜索更新改成基于MQ(Message Queue, 消息队列)的方式了

许超前的博客 - A longker in the Earth 2009-10-20 22:25:16 累计浏览 4,633 次
本机暂存

    经过同事们的一番努力,终于把搜索更新改为基于MQ的方式了,大家(特别是增禄和大庆)辛苦了。

    搜索更新早就想改了,因为种种限制,无法实施。这些限制如下:

    一)手机之家采用混合编程(主要是PHP+JAVA)。

    二)JAVA调用PHP显然不是好方法。

    三)用PHP做异步触发很困难。

    四)用PHP写驻留程序很困难。

    五)要让PHP在消费消息失败时回滚很困难。

    六)基于这些限制,DAL1.0最后用PHP和数据库实现了一个不太可靠的消息队列。这显然不太好。

    “旧”更新方式如下图所示:

    Screenshot-001

    DAL升级到2.x后,之前的种种限制已经消失了,搜索更新一下子有了很大的改进空间。具体改进如下:

    一)引入双队列,为的是能异步触发,从而节省内存、降低CPU占用率,进而提高负载能力。DAL2.x内置队列写消息非常快,写一条消息耗时不到1微秒(不是毫秒,了解个大概,省略测试环境)。

    二)(部分)拉改成了推,“近实时“更新有了可能性。时间关系,留待下一步继续改进。

    “新”更新方式如下图所示:

    Screenshot-002

    接下来可能会抽个时间试试以下的方式(废弃Crond,主要是为了减少更新延迟):

    Screenshot-003

    注:图中提到的M3,是Massive Message Manager的简称,是我们的大庆在近期开发的作品,在此鼓励一下:)。

    ―The End.

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. SmartSprites - 命令行形式的CSS Sprites生成器 (累计阅读 123,898)
  2. 使用gettext来支持PHP的多语言 (累计阅读 39,270)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  4. Java开发岗位面试题归类汇总 (累计阅读 22,159)
  5. android 开发入门 (累计阅读 19,531)
  6. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,408)
  7. 我的PHP,Python和Ruby之路 (累计阅读 13,150)
  8. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,791)
  9. HashMap解决hash冲突的方法 (累计阅读 12,657)
  10. 15个最好的免费开源电子商务平台 (累计阅读 12,541)