概述
消息队列(MessageQueue,MQ)是分布式系统中的重要组件。主要是用于解决异步、解耦、削峰等问题,通过高效可靠的消息传递机制进行平台无关的数据交流,可以在分布式环境下扩展进程间的通信,基于数据通信来进行分布式系统的集成,以实现高性能、高可用、可伸缩和最终一致性架构。
常用消息队列
Kafka、RocketMQ、RabbitMQ、ActiveMQ。
适用场景
1、构造实时流数据管道,用于系统或应用之间可靠的消息传输。
2、数据采集及处理,例如连接到一个数据库系统,捕捉表的变更内容。
3、构建实时流式应用程序,对这些流数据进行转换或者影响,如:应用程序作为一个流处理器,消费一个或者多个topic产生的输入流,然后生产一个输出流到一个或多个topic中去,在输入输出流中进行有效的转换。
特性
1. 生产者/消费者支持多语言
2. 支持分布式横向扩缩容
3. 高性能(高吞吐量)
4. 版本向下兼容
5. 提供消息持久化
6. 流处理
高性能实现
1. 磁盘顺序读取和写入(接近内存随机读写的性能)
2. nio和零拷贝
3. 消息批处理
4. 消息压缩