一、消息系统
1、消息队列
消息Message:网络中的两台计算机之间传递的数据,如:文本、音频、视频等。
队列Queue:一种线性表,只允许在首部删除元素(队首),在尾部添加元素(队尾)#类似单行道,只能从尾部进,首部出
消息队列MQ:存放消息的队列,是消息在传输过程中的容器,提供生产和消费接口供外部调用,进行数据的存储和获取
2、MQ分类
分为两类:点对点(Peer-to-Peer,P2P)、发布/订阅(Publish?subscribe)
共同点:消息生产者(Producer)生产消息发送到队列中、消息消费者(Consumer)从队列中读取并消费消息。
不同点:
· 点对点
组成:消息队列(Queue)、发送者(Sender)、接收者(Receiver)
一个生产者生产的消息只能有一个消费者,消息一旦被消费,消息就不在消息队列中了,如:打电话
即发送到消息队列的消息能且只能被一个接收者接收
· 发布/订阅
组成:消息队列(Queue)、发布者(Publisher)、订阅者(Subscriber)、主题(Topic)
每个消息可以有多个消费者,彼此互不影响,如:发布一个朋友圈,朋友都能看到。
即发布到消息队列的消息能被多个接收者(订阅者)接收
Kafka即是这种发布订阅模式
3、常见消息系统
· ActiveMQ:历史悠久,实现了JMS规范,支持性好,性能相对不高
· RabbitMQ:可靠性高、安全
· Kafka:分布式、高性能(处理百万级的消息)、跨语言
· RocketMQ:阿里开源的消息中间件,纯JAVA