消息系统的简介
- 什么是消息系统
发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。发送者把自己想要发送的信息放入一个容器中(我们称之为Message),然后把它保存至一个系统公用空间的消息队列(Message Queue)中;本地或者是异地的消息接收程序再从该队列中取出发给它的消息进行处理。
- 消息系统分为哪几类?
消息系统一般分为两类:点对点(peer-to-peer)、发布订阅(Subscribe/Publish) 两种。
- 1 点对点(peer-to-peer)消息系统特点
单播;
一般是基于polling(轮询)或pull(拉取)接受消息;
发送到消息队列的消息被一个而且只有一个接受者接受,即使有多个接收者在同一队列中监听同一消息;
支持”即发即弃“的异步消息传送模式,同时支持“请求应答”的同步消息传送模式。
- 2 发布订阅(sub/pub)消息系统特点
多播,单播。
Kafka支持不同消费者组的多播,同时支持在同一消费者组里的单播。
发布到一个主题的消息可以被多个接受者所接受;
支持push、pull、polling三种方式接受消息;
解耦能力比点对点高。
- 消息系统的优势
解耦:各系统通过消息系统来交换数据,系统间解耦。
冗余:部分消息系统具有持久化的能力,将消息系统保存到本次磁盘。避免消息丢失风险,同时也避免消息重发。
扩展:消息系统是个统一的接口,各系统可以水平扩展。
峰值处理能力:消息系统可以抵抗峰值流量,消息接受者可以根据自己的能力来获取消息。(限流也可解决峰值问题)
可恢复性:系统部分组件失效不会影响整个系统,组件恢复后仍可以获得消息。
异步通信:消息发送者发送消息,消息消费者可以在合适的时间消费消息。
- 常用的消息系统有那些,各自的特点
RabbitMQ:支持多种协议AMQO、XMPP、SMTP、STOMP,支持负载均衡、数据持久化,支持点对点、发布订阅模式。跨语言。
重量级消息系统。
Redis:Redis支持MQ功能,可作为轻量级队列服务使用。跨语言。
ActiveMQ:JMS实现 点对点消息发送模式 支持XA事务(分布式事务)。JAVA语言使用使用。
Kafka\Jafka:高性能、跨语言、分布式发布订阅模式,支持在线和离线处理,全分布式
RocketMQ:纯JAVA实现,支持本地事务和XA分布式事务。

浙公网安备 33010602011771号