终于把搜索更新改成基于MQ(Message Queue, 消息队列)的方式了
浏览:3633次 出处信息
经过同事们的一番努力,终于把搜索更新改为基于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消息队列的若干实现方式 (阅读:10868)
- 各消息队列软件产品大比拼 (阅读:5263)
- 使用django+celery+RabbitMQ实现异步执行 (阅读:5138)
- 回调还是消息队列 (阅读:2858)
- HQueue:基于HBase的消息队列 (阅读:1820)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
后一篇:web项目和单元测试 >>
文章信息
- 作者:许超前 来源: 许超前的博客 - A longker in the Earth
- 标签: Queue 消息队列
- 发布时间:2009-10-20 22:25:16
近3天十大热文
-
[61] memory prefetch浅析
-
[56] 转载:cassandra读写性能原理分析
-
[52] 深入浅出cassandra 4 数据一致性问
-
[44] MySQL半同步存在的问题
-
[41] 《web前端最佳实践》—高维护性css
-
[40] 获取Dom元素的X/Y坐标
-
[38] 字符引用和空白字符
-
[37] javascript插入样式
-
[37] 基本排序算法的PHP实现
-
[35] MySQL vs NoSQL 效率与成本之争