划船去巴黎

导航

消息中间件

定义:

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

主流消息中间件:

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.纯粹消息通讯;

参考文章:https://blog.csdn.net/yexiaomodemo/article/details/80444732

 

 

 

posted on 2021-12-22 19:18  划船去巴黎  阅读(51)  评论(0编辑  收藏  举报