消息队列篇

2023-04-11  本文已影响0人  markDownMan
1. ActiveMQ,RabbitMQ,RocketMQ,kafka区别?

Kafka、RocketMQ、RabbitMQ的对比

  1. ActiveMQ:社区不活跃,不适于大数据量平法场景
  2. RabbitMQ(小规模数据):
    优点:性能较好,支持多语言使用。吞吐量达到万级数据,MQ功能齐全,社区活跃性强。
    缺点:erlang语言开发,不利于二次开发。
  3. RocketMQ(电商):
    优点:吞吐量十万级,高可用,分布式,支持10亿级别的数据堆积,消息可靠性强。
    缺点:只支持java,c++,社区活跃性一般
  4. kafka(日志采集):
    优点:吞吐量最高,高可用,分布式
    缺点:功能较为简单,消费失败不支持重试,发生宕机后,数据顺序不一致。社区更新较缓慢。
2 RocketMQ的原理

RocketMQ由NameServer注册中心集群,Producer生产者集群,Consumer消费者集群和若干Broker(RocketMQ进程组成)

  1. Broker启动时向所有NameServer注册,并保持长连接,30秒发送一次心跳。
  2. Producter发送消息时,向NameServer获取Broker服务器地址,根据负载均衡算法选择一台服务器发送消息。
  3. Consumer消费消息时,向NameServer获取
3.MQ如何保证消息的高效读写?

kafka,rocketMQ通过零拷贝技术优化文件的读写。
传统文件拷贝方式:


f5294ed6d26e8fc0997e8806c1de044.png

零拷贝方式:


49592bc70f8bf689640f0e456411649.png
零拷贝的2种方式:
1.mmap:适合1.5-2g的文件。创建一个服务器内核内存缓冲区的映射,应用通过文件映射,读写文件。
2.DMA:无限制。底层用DMA技术处理文件。FileChannel
上一篇 下一篇

猜你喜欢

热点阅读