1 概述
MQ衡量指标:
- 服务性能
- 数据存储
- 集群架构
1.1 ActiveMQ
完全支持JMS规范。性能一般。API丰富。
架构模式:
- 1 Master-Slave模式(主备模式)
-
2 NetWork模式(集群模式)
image.png
1.2 Kafka
LinkedIn开源。性能好。
分布式发布-订阅消息系统。
主要特点是基于Pull的模式来处理消息消费,追求高吞吐。对消息的重复、丢失、错误没有严格要求。
结构模式:
-
1 集群模式
image.png
1.3 RocketMQ
Java开发,高性能,高吞吐。适合大规模分布式系统。
思路起源Kafka。商业版收费。
架构模式:
-
1 集群模式
image.png
1.4 RabbitMQ
image.pngErlang开发。完美结合SpringAMQP。
开源消息队列系统。基于AMQP协议实现。
AMQP主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性,安全。适用在对数据一致性、稳定性和可靠性要求高的场景。
架构模式
image.png2 AMQP
高级消息队列协议
Advanced Message Queuing Protocol
协议模型
image.png核心概念
Server: 又称Broker,接受客户端的连接,实现AMQP服务。
Connection: 应用程序与Broker的网络连接。
Channel: 网络信道,几乎所有的操作都在Channel中进行。是进行消息读写的通道。
客户端可以建立多个channel,每个channel代表一个会话任务。
Message: 消息,由properties和body组成。Properties可以对消息进行修饰,比如消息的优先级,延迟等高级特性;body就是消息内容。
Virtual host: 虚拟地址,用于进行逻辑隔离,最上层的消息路由。
一个VH里可以有若干个Exchange和Queue。
同一个VH里不能有相同名称的Exchange或Queue。
Exchange: 接收消息,根据路由键转发消息到绑定的队列。
Binding: Exchange和Queue之间的虚拟连接,binding中可以包含routing key(路由键)。
Routing key(路由键): 一个路由规则,虚拟机VH可以用它来确定如何路由一个特定的消息。
Queue: Message queue,保存消息并将它们转发给消费者。
整体架构:
image.png
消息的流转:
image.png
$ ps -ef | grep rabbit
$ kill pid
网友评论