当前位置:   article > 正文

消息中间件介绍

消息中间件介绍

5995867c05274df7a52017a2fa2f6fe5.jpg

 

面向消息的系统(消息中间件)是在分布式系统中完成消息的发送和接收的基础软件。消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。

 

主流消息中间件:

 

ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等,其中应用最为广泛的要数RabbitMQ、RocketMQ、Kafka 这三款;

 

RabbitMQ:

 

 优点:

 

1.轻量级、部署方便;

 

2.灵活路由配置;

 

3.客户端支持大多编程语言;

 

缺点:

 

1.如果消息大量堆积,就会导致性能急剧下降;

 

2.性能较RocketMQ和Kafka最差,秒处理级几万~几十万,如果应用要求高性能,慎选!

 

3.Erlang开发,功能扩展以及二次开发能力差。

 

 

 

RocketMQ:

 

优点:

 

1.有序、事务、流计算、消息推送、日志流处理、binlog分布等场景,经历双11考验。

 

2.几乎具备了消息队列应该具备的所有特性;

 

3.java开发,二次开发方便;

 

4.对电商领域的响应延迟做了很多优化。大多数情况下,响应毫秒级。

 

5.性能比RabbitMQ高一个数量级,秒几十万级别。

 

缺点:

 

与周边系统整合间融不好。

 

 

 

Kafka:

 

Kafka的可靠性、稳定性和功能性满足大多数应用场景。兼容性完美,尤其大数据和流计算领域,几乎支持所有开源软件。三个软件中发送和接收异步消息最好。秒几十万级别;如果异步消息,并且开启了压缩,Kafka最终可以达到秒2000W消息级别。

 

优点:

 

1.支持多消费和生产者;

 

2.支持broker横向拓展;

 

3.副本集机制,实现数据冗余,保证数据不丢失;

 

4.通过topic将数据进行分类;

 

5.通过分批发送压缩数据的方式,减少数据传输开销,提高吞吐量;

 

6.支持多种模式消息;

 

7.基于磁盘实现数据的持久化;

 

8.高性能的处理信息,在大数据的情况下,可以保证亚秒级的消息延迟;

 

9.一个消费者可以支持多种topic的消息;

 

10.对CPU和内存的消耗比较小;

 

11.对网络开销也比较小;

 

12.支持跨数据中心的数据复制;

 

13.支持镜像集群;

 

缺点:

 

1.由于是批量发送,所以数据达不到真正的实时;

 

2.对于mqtt协议不支持;

 

3.不支持物联网传感数据直接接入;

 

4.只能支持统一分区内消息有序,无法实现全局消息有序;

 

5.监控不完善,需要安装插件;

 

6.需要配合zookeeper进行元数据管理;

 

7.会丢失数据,并且不支持事务;

 

8.可能会重复消费数据,消息会乱序,可用保证一个固定的partition内部的消息是有序的,但是一个topic有多个partition的话,就不能保证有序了,需要zookeeper的支持,topic一般需要人工创建,部署和维护一般都比mq高;

 

参考文章:https://zhuanlan.zhihu.com/p/269823523

 

 

 

使用场景:

 

1.异步处理;

 

2.应用解耦;

 

3.流量削峰;

 

4.日志处理;

 

5.纯粹消息通讯;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/289169
推荐阅读
相关标签
  

闽ICP备14008679号