技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> 终于把搜索更新改成基于MQ(Message Queue, 消息队列)的方式了

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

浏览:3267次  出处信息

    经过同事们的一番努力,终于把搜索更新改为基于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. Redis消息队列的若干实现方式    (阅读:10576)
  2. 各消息队列软件产品大比拼    (阅读:5040)
  3. 使用django+celery+RabbitMQ实现异步执行    (阅读:4900)
  4. 回调还是消息队列    (阅读:2632)
  5. HQueue:基于HBase的消息队列    (阅读:1456)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1