1. ActiveMQ,RabbitMQ,RocketMQ,kafka区别?
- ActiveMQ:社区不活跃,不适于大数据量平法场景
- RabbitMQ(小规模数据):
优点:性能较好,支持多语言使用。吞吐量达到万级数据,MQ功能齐全,社区活跃性强。
缺点:erlang语言开发,不利于二次开发。 - RocketMQ(电商):
优点:吞吐量十万级,高可用,分布式,支持10亿级别的数据堆积,消息可靠性强。
缺点:只支持java,c++,社区活跃性一般 - kafka(日志采集):
优点:吞吐量最高,高可用,分布式
缺点:功能较为简单,消费失败不支持重试,发生宕机后,数据顺序不一致。社区更新较缓慢。
2 RocketMQ的原理
RocketMQ由NameServer注册中心集群,Producer生产者集群,Consumer消费者集群和若干Broker(RocketMQ进程组成)
- Broker启动时向所有NameServer注册,并保持长连接,30秒发送一次心跳。
- Producter发送消息时,向NameServer获取Broker服务器地址,根据负载均衡算法选择一台服务器发送消息。
- Consumer消费消息时,向NameServer获取
3.MQ如何保证消息的高效读写?
kafka,rocketMQ通过零拷贝技术优化文件的读写。
传统文件拷贝方式:
![](https://img.haomeiwen.com/i10601893/aea068ca9a9770fc.png)
零拷贝方式:
![](https://img.haomeiwen.com/i10601893/1b76bb956c0d474a.png)
零拷贝的2种方式:
1.mmap:适合1.5-2g的文件。创建一个服务器内核内存缓冲区的映射,应用通过文件映射,读写文件。
2.DMA:无限制。底层用DMA技术处理文件。FileChannel
网友评论