腾讯:MQ 技术产品井喷,今天来详聊一下腾讯开源消息中间件 TubeMQ | 原力计划( 三 )
本文插图
其他几个mq
滴滴的DDMQ:
https://github.com/didi/DDMQ/blob/master/README_CN.md
去哪儿网的QMQ:
https://github.com/qunarcorp/qmq
本文插图
有意思的几个点
TubeMQ跟 kafka , rocketmq , pulsar等主流的MQ架构上有什么差别?
官方给出的意见是:
Kafka按照顺序写 + 顺序块读的模式实现 , 单实例下性能数据很强 , 但随着实例数增多 , 它的性能就呈现不稳定下降状态;TubeMQ采用顺序写 + 随机读的模式 , 即使在最大限制下系统仍可以做到长期稳定的1G以上的入流量 , 同时 , 结合服务端过滤过滤消费非常顺畅 。
个人对这个持保留意见 , 大量创建topic不适合kafka的设计原则(一般我们建议单集群的topic数量在100以内 , 过多的小topic造成随机读写 , 但是可以合并 , 然后区分和路由消息即可) , 同时如果改成SSD盘也可以提升吞吐和延迟 , 几千个topic问题不大 。 而且kafka的延迟也不像上面的文档里对比说的250ms , 我们实际使用大概在10-40ms之间 。
TubeMQ看了一下 , 整体设计跟pulsar有点像 , 主要是broker和storage做了分离;消息处理模式上跟ActiveMQ到底有些许接近 。
几个有意思的地方:
1、TubeMQ不支持多副本 , 这样的话单机有可能还是在极端情况下丢失数据 , 但多副本是目前的各种分布式消息队列的标配(看了一下腾讯云上的商业版本CMQ是支持的 。 )
2、服务器侧消费负载均衡 , 早期版本的kafka是这样的 , 问题挺多
3、消息随机读 , 这样需要加内存缓存和依赖SSD , 挺诡异 , 为了并发又加了锁 , 这一块很复杂 , ActiveMQ就是因为内存的处理太复杂 , 导致量一大 , 谁都用不好
4、同时支持推和拉 , 这一点也挺有意思 , 跟第一条一条有关系 , 要是支持推的话 , 服务端肯定需要有状态
5、支持服务器端的消息过滤 , 现在一般的MQ都是客户端过滤 , 也同理 。
MQ发现到现在 , 一共经历了三代 , 分别以ActiveMQ , Kafka/RocketMQ , Pulsar为代表 , 从趋势上来看 , 越来越分布式、趋向对云原生的支持 , 越来越无状态 , broker越来越轻薄 。
总之这个方案看起来是综合了传统和现在的各个MQ的一些特点 , 但是实现的很重 。
还有个tip , TubeMQ里的组件名称有点乱 , 叫master的东西 , 实际上是broker , 叫broker的东西 , 实际上是storage(在pulsar里是bookie) 。
:)
原文链接:
https://blog.csdn.net/KimmKing/article/details/103133789
推荐阅读
- #程序员#腾讯女程序员相亲遭对方嫌弃,晒出聊天记录感叹:太难了
- 『腾讯科技』淘宝天猫蒋凡在阿里内网回应传闻:深表歉意,恳请公司展开调查
- 「腾讯」腾讯视频盈利难:2019年亏损30亿 盗墓题材连拍五年没水花
- 服务@云市场跨步式发展 打造ToB云市场阿里腾讯外“第三股势力”
- 每日经济新闻咨询@联邦学习成人工智能新贵 腾讯安全:技术服务能力才是重点
- 腾讯科技■消费券“暖”市场,中山市发2000万微信消费券
- 「腾讯创业」当年上《职来职往》《非你莫属》的“明星”公司,大多已经不见了
- 游戏■腾讯代理全新手游来了:MOBA+吃鸡 6月9号上线
- :腾讯游戏手机,一款腾讯为游戏打造的多功能手机
- 『数码盟』腾讯游戏手机,一款腾讯为游戏打造的多功能手机