终于把搜索更新改成基于MQ(Message Queue, 消息队列)的方式了
浏览:3408次 出处信息
经过同事们的一番努力,终于把搜索更新改为基于MQ的方式了,大家(特别是增禄和大庆)辛苦了。
搜索更新早就想改了,因为种种限制,无法实施。这些限制如下:
一)手机之家采用混合编程(主要是PHP+JAVA)。
二)JAVA调用PHP显然不是好方法。
三)用PHP做异步触发很困难。
四)用PHP写驻留程序很困难。
五)要让PHP在消费消息失败时回滚很困难。
六)基于这些限制,DAL1.0最后用PHP和数据库实现了一个不太可靠的消息队列。这显然不太好。
“旧”更新方式如下图所示:
DAL升级到2.x后,之前的种种限制已经消失了,搜索更新一下子有了很大的改进空间。具体改进如下:
一)引入双队列,为的是能异步触发,从而节省内存、降低CPU占用率,进而提高负载能力。DAL2.x内置队列写消息非常快,写一条消息耗时不到1微秒(不是毫秒,了解个大概,省略测试环境)。
二)(部分)拉改成了推,“近实时“更新有了可能性。时间关系,留待下一步继续改进。
“新”更新方式如下图所示:
接下来可能会抽个时间试试以下的方式(废弃Crond,主要是为了减少更新延迟):
注:图中提到的M3,是Massive Message Manager的简称,是我们的大庆在近期开发的作品,在此鼓励一下:)。
―The End.
建议继续学习:
- Redis消息队列的若干实现方式 (阅读:10686)
- 各消息队列软件产品大比拼 (阅读:5136)
- 使用django+celery+RabbitMQ实现异步执行 (阅读:5005)
- 回调还是消息队列 (阅读:2724)
- HQueue:基于HBase的消息队列 (阅读:1598)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:web项目和单元测试 >>
文章信息
- 作者:许超前 来源: 许超前的博客 - A longker in the Earth
- 标签: Queue 消息队列
- 发布时间:2009-10-20 22:25:16
近3天十大热文
- [68] Go Reflect 性能
- [68] 如何拿下简短的域名
- [67] Oracle MTS模式下 进程地址与会话信
- [62] IOS安全–浅谈关于IOS加固的几种方法
- [61] 图书馆的世界纪录
- [60] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [48] 读书笔记-壹百度:百度十年千倍的29条法则