同事教我什么是 rocketmq系列 第1章节 中间件存在的意义及消息中间件的对比

消息队列中间件存在的意义

me:我可以使用jdk内置的队列BlockQueue等来实现啊,为什么要用消息中间件呢?
同事:内置的队列确实可以满足一些需求,可是如果是重要不允许丢失的数据。使用内置队列,在服务器宕机的时候,内置队列的消息是不是会丢失呢?
me:确实会丢失,但可以用redis来保证数据丢失问题,redis可以有实现确保数据不丢失。
同事:redis确实可以做到,但是如果你有很多业务需要使用队列。给用户推送消息,用户下单推送消息,用户注册推送消息...等等N个队列。你是不是需要在redis维护N个队列。
me:确实有点麻烦,但是可以封装一下,减少消息队列代码在原本序中的耦合。
同事:如果消息被处理失败,或者数据量是百万,千万,甚至亿万,使用redis能很好地处理吗?如果不能,你是不是要自己实现?结果就是实现不了,BUG百出?
me:确实是这样的
me:消息队列中间件就是将消息管理(消息生产,存储,路由,消费,各种模式,监控,集群支持等等)独立出来,减少代码入侵,降低耦合,增加健壮可用性。让各系统更注重自己的逻辑。
同事:理解的差不多
me:为什么有rabitmq,阿里还要开发rocketMq?
同事:为什么有淘宝,还有京东,拼多多?

 

rocketmq官网给出了特性

1.高压环境1毫秒响应延迟超过99.6%(这里的延迟是指消息队列响应,不包括通信响应时间(通信响应时间受网络影响))
2.财务导向,高可用的消息追踪和审计
3.万亿级别的数据堆积
4.4.1版本后,开放分布式消息传递和流标准
5.友好的大数据支持  (支持批处理,类似kafka应用的比较多)
6.积累消息不损失性能

 

 

消息中间件的对比

RocketMQ,ActiveMQ和Kafka

  持久化 预定消息 批处理 广播 服务触发重新交付 事务 消息追踪 高可用  
RocketMQ 磁盘 支持 支持(同步生产) 支持 支持 支持 支持 很高  
ActiveMQ 内存,文件,数据库 支持 不支持 支持 不支持 支持 不支持 可能依赖zK  
Kafka 磁盘 不支持 支持 (异步生产) 不支持 不支持 不支持 不支持 依赖zk  
rabitmq 内存,文件 支持 支持 支持 支持 支持 支持  

官网中提到

由于太多的队列和主题,activemq的IO遇到l了瓶颈。

得出-->

   rocketmq支持上千、上万级的topic(主题)!

   rocketmq吞吐量大!

 

参考:

https://rocketmq.apache.org/docs/motivation/          rocketmq官网

 

有不对的地方,希望大家提示,我会及时更正!

      谢谢

你可能感兴趣的:(rocketmq,消息中间件意义,消息中间件对比)