微博的消息队列

2016-03-18 20:20:13 +08:00
 tabsu

离开微博已久,总想着弄点东西出来纪念一下当年的峥嵘岁月:)。在微博,你不能不知道鸟哥 Laruence ,也不能不知道 mq 。 mq 是一个基于 memcached 协议,用 c/c++编写的消息队列中间件,有着高性能、解耦、异步化等特点。现在用 Go 重新实现了一遍,将早前自己用 mq 的过程中觉得有些特性可以加上的,都一一加上了,由于其依赖的东西极少,只是简单用了一个轻巧型的嵌入式数据库 BerkeleyDB ,就可以实现一个 simple 的队列服务 tcp server ,见https://github.com/YoungPioneers/mgq,特性如下:

2326 次点击
所在节点    Go 编程语言
13 条回复
est
2016-03-18 20:23:30 +08:00
kafka 路过。
tabsu
2016-03-18 21:05:01 +08:00
@est 公司小,用不起 kafka 这么个集群
hbkdsm
2016-03-18 21:26:05 +08:00
最近在了解 message queue 这项技术,请问微博内部的消息队列用的是哪种实现?
还有 memcached 协议与 AMQP 协议有哪些区别呢?
tabsu
2016-03-18 21:41:15 +08:00
@hbkdsm 微博的消息队列是基于一个嵌入式 nosql BerkeleyDB 来实现的,见 http://www.oracle.com/technetwork/cn/database/database-technologies/berkeleydb/overview/index.html ,另外基于 memcached 的优势在于: 1 )协议简单 2 )目前支持多种语言的 client 端,比较方便使用,不需要自己写一个长连接的 client
slixurd
2016-03-18 22:20:29 +08:00
没给出 benchmark ,没给吞吐量,没说怎么保证可靠性和可靠性有多少,会不会丢数据
这东西在这样的介绍下真会有人用么
楼主快把文档完善一下
tabsu
2016-03-18 22:55:11 +08:00
@slixurd 谢谢,是的, todo 里面就有,周末就加上
hbkdsm
2016-03-18 23:17:36 +08:00
@tabsu 感谢回复!
wjfz
2016-03-19 00:16:28 +08:00
感谢分享。
starry16
2016-03-19 22:16:14 +08:00
赞,不错
pubby
2016-03-19 23:22:37 +08:00
以前用 RabbitMQ ,现在用 beanstalk
sbpcx
2016-03-20 02:14:44 +08:00
@tabsu 已经不是说微博的队列是基于 redis 的 list 吗?。
tabsu
2016-03-20 09:57:10 +08:00
@sbpcx 在微博,有基于 redis 改造的组件,应用于点赞数,转发数等, mq 是自研的用于如博文消息体的中间存储
tabsu
2016-03-20 10:00:12 +08:00
@pubby 现有 queue 比较多,场景不一样,选取也不同。以前总好奇消息队列是怎么实现,打算自己动手弄一个,明白下原理,后面也打算对比下各种 queue 之间的性能对比图

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/264576

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX