消息队列介绍
什么是消息队列
- 并没有标准的定义
- 一般认为,消息中间件属于分布式系统中一个子系统
- 关注与数据的发送与接收
- 利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成
- 主要概念:高效,可靠,异步
消息队列能做什么
- 服务解耦
- 削峰填谷
- 异步化调用
主流的消息队列
- RabbitMQ
- ActiveMQ
- RocketMQ
- KafKa
主流消息队列的对比
消息队列的选型角度
- 业内常用的消息队列有那些
- 每一种MQ各自的表现如何
- 这些MQ在同等机器条件下,能抗多少QPS
- 发送消息和消费消息性能有多高
- 可用性能不能得到保证
- 他们会不会丢失数据?
- 如果需要的话能否让他们进行线性的集群扩容
- 消息中间件经常需要使用的一些功能他们都有吗(比如说延迟消息、事务消息、消息堆积、消息回溯、死信队列,等等)
- 消息队列文档是否齐全
- 社区是否活跃
- 在行业内运用是否广泛
- 用什么语言编写的(自己做扩展是否方便)
使用消息队列可能会带来的问题
- 增加系统复杂性
- 降低系统可用性
- 消息丢失
- 消息重复
常见的消息队列协议
- OpenWire
- AMQP
- MQTT
- Kafka
- OpenMessage