Red Hat AMQ 7 简介
第 1 章 关于 Red Hat AMQ 7 复制链接链接已复制到粘贴板!
Red Hat AMQ 为互联网扩展应用程序提供快速、轻量级和安全的消息传递。AMQ Broker 支持多种协议和快速消息持久性。AMQ Interconnect 利用 AMQP 协议在网络间分发和扩展您的消息传递资源。AMQ 客户端为多种语言和平台提供一系列消息传递 API。
将 AMQ 组件视为 toolbox 中的工具。它们可以一起使用或单独用来构建和维护消息传递应用程序,AMQP 是将其绑定到的 toolbox 中的粘滞。AMQ 组件共享一个通用管理控制台,因此您可以从一个接口管理它们。
Red Hat AMQ 7 包括 AMQ Streams,它为在 OpenShift Container Platform 上运行 Apache Kafka 提供容器镜像和 Operator。AMQ Streams 不支持 AMQP。
1.1. 主要特性 复制链接链接已复制到粘贴板!
AMQ 允许开发人员构建快速、可靠且易于管理的消息传递应用程序。
在互联网规模上的消息传递
AMQ 包含用于构建高级多数据中心消息传递网络的工具。它可以在无缝消息传递结构中连接客户端、代理和独立服务。
顶级安全性和性能
AMQ 提供现代 SSL/TLS 加密和可扩展的 SASL 身份验证。AMQ 提供快速、高容量的消息和类领先的 JMS 性能。
广泛的平台和语言支持
AMQ 使用多种语言和操作系统,因此您的不同应用程序组件可以进行通信。AMQ 支持 C++、Java、JavaScript、Python、Ruby 和 .NET 应用程序,以及基于 Linux、Windows 和 JVM 的环境。
专注于标准
AMQ 实施 Java JMS 1.1 和 2.0 API 规格。其组件支持 ISO 标准 AMQP 1.0 和 MQTT 消息传递协议,以及 STOMP 和 WebSocket。
集中管理
使用 AMQ,您可以从单个管理界面管理所有 AMQ 组件。您可以使用 JMX 或 REST 接口以编程方式管理服务器。
第 2 章 组件概述 复制链接链接已复制到粘贴板!
Red Hat AMQ 由 AMQ Broker、AMQ Interconnect 和 AMQ 客户端组成。它们协同工作,在分布式应用中启用网络通信。
2.1. AMQ Broker 复制链接链接已复制到粘贴板!
AMQ Broker 是一个功能齐全的、面向消息的中间件代理。它提供高级寻址和队列、快速消息持久性和高可用性。AMQ Broker 支持多个协议和操作环境,可让您使用现有的资产。AMQ Broker 支持与红帽 JBoss Enterprise Application Platform 集成。
如需更多信息,请参阅 AMQ Broker 入门。
2.2. AMQ Interconnect 复制链接链接已复制到粘贴板!
AMQ Interconnect 在启用了 AMQP 的端点(包括客户端、代理和独立服务)之间提供灵活的消息路由。通过将单一连接连接到 AMQ Interconnect 路由器网络,客户端可以与连接到网络的任何其他端点交换消息。
AMQ Interconnect 不使用 master-slave 集群来实现高可用性。它通常部署到带有冗余网络路径的多个路由器的拓扑中,后者用于提供可靠的连接。AMQ Interconnect 可以跨网络分发消息传递工作负载,并实现新级别的扩展,且延迟非常低。
如需更多信息,请参阅 对 AMQ Interconnect 2.0 使用 AMQ Interconnect 路由器和 发行注记。
2.3. AMQ 客户端 复制链接链接已复制到粘贴板!
AMQ 客户端是 AMQP 1.0 和 JMS 客户端、适配器和库的集合。它包括 JMS 2.0 支持和新的、事件驱动的 API,以启用集成到现有应用程序中。
如需更多信息,请参阅 AMQ 客户端概述。
AMQP 客户端
JMS 客户端
- AMQ JMS (AMQP 1.0)
- AMQ 核心协议 JMS
- AMQ OpenWire JMS
适配器和库
2.4. 组件兼容性 复制链接链接已复制到粘贴板!
下表列出了 AMQ 组件支持的语言、平台和协议。请注意,支持相同协议的任何组件都可以互操作,即使它们的语言和平台不同。例如,AMQ Python 可以与 AMQ JMS 通信。
组件 | 语言 | 平台 | 协议 |
---|---|---|---|
AMQ Broker | - | JVM | AMQP 1.0, MQTT, OpenWire, STOMP, Core Protocol |
AMQ Interconnect | - | Linux | AMQP 1.0 |
AMQ C++ | C++ | Linux、Windows | AMQP 1.0 |
AMQ JavaScript | JavaScript | Node.js,浏览器 | AMQP 1.0 |
AMQ JMS | Java | JVM | AMQP 1.0 |
AMQ .NET | C# | .NET | AMQP 1.0 |
AMQ Python | Python | Linux | AMQP 1.0 |
AMQ Ruby | Ruby | Linux | AMQP 1.0 |
AMQ Spring Boot Starter | Java | JVM | AMQP 1.0 |
AMQ 核心协议 JMS | Java | JVM | 核心协议 |
AMQ OpenWire JMS | Java | JVM | OpenWire |
AMQ JMS Pool | Java | JVM | - |
如需更多信息,请参阅 支持的 Red Hat AMQ 7 配置。
第 3 章 常见部署模式 复制链接链接已复制到粘贴板!
Red Hat AMQ 7 可以在各种拓扑中设置。以下是您可以使用 AMQ 组件实现的一些常见部署模式。
3.1. Central 代理 复制链接链接已复制到粘贴板!
中央代理模式相对容易设置和维护。它还相对可靠。路由通常是本地的,因为代理及其客户端始终位于彼此的一个网络跃点内,无论添加多少个节点。这个模式也称为 hub 和 spoke,中央代理是 hub,客户端是 spoke。
图 3.1. Central 代理模式
唯一关键元素是中央代理节点。您的维护工作重点是保持这个代理可供其客户端使用。
3.2. 路由消息传递 复制链接链接已复制到粘贴板!
当将消息路由到远程目的地时,代理将其存储在本地队列中,然后将其转发到其目的地。但是,有时应用程序需要实时发送请求和响应消息,并让代理存储和转发消息过于昂贵。使用 AMQ,您可以使用路由器来代替代理,以避免这种成本。与代理不同,路由器不会在将消息转发到目的地之前存储消息。相反,它充当轻量级并直接连接两个端点。
图 3.2. 无代理路由消息传递模式
3.3. 高可用性代理 复制链接链接已复制到粘贴板!
为确保代理可用于其客户端,请部署高度可用的(HA)主从对来创建备份组。例如,您可能在两个节点上部署两个 master-slave 组。此类部署会为每个活跃代理提供备份,如下图中所示。
图 3.3. master-slave 对
在正常操作条件下,一个 master 代理在每个节点上活跃,可以是物理服务器或虚拟机。如果一个节点失败,则另一个节点上的从设备接管。结果是驻留在同一健康节点上的两个活跃的代理。
通过部署主从对,您可以扩展此类备份组的整个网络。这个类型的大型部署可用于在多个代理间分布消息处理负载。下图中的代理网络由 8 个分布的 master-slave 组组成。
图 3.4. master-slave 网络
3.4. 负载均衡器后面的路由器对 复制链接链接已复制到粘贴板!
在负载平衡器后面部署两个路由器可为单一数据中心部署提供高可用性、弹性和可扩展性。端点使其连接到一个已知的 URL,由负载均衡器支持。接下来,负载平衡器在路由器之间分散传入的连接,以便分发连接和消息传递负载。如果其中一个路由器失败,则连接到它的端点将重新连接到剩余的活动路由器。
图 3.5. 负载均衡器后面的路由器对
为了获得更大的可扩展性,您可以使用更多路由器,例如三个或四个路由器。每个路由器直接连接到所有其他路由器。
3.5. DMZ 中的路由器对 复制链接链接已复制到粘贴板!
在这种部署架构中,路由器网络在外部世界的客户端和支持企业应用程序的代理之间提供保护层和隔离。
图 3.6. DMZ 中的路由器对
有关 DMZ 拓扑的重要备注:
- 部署中连接的安全性与用于外部客户端的安全性分开。例如,您的部署可能会使用私有证书颁发机构(CA)进行内部安全,向每个路由器和代理发布 x.509 证书以进行身份验证,但外部用户可能会使用不同的公共 CA。
- 企业和 DMZ 之间的路由器连接始终从企业建立到 DMZ 以实现安全性。因此,不允许来自企业外部的连接。但是,AMQP 协议在建立连接后启用双向通信。
3.6. 不同数据中心的路由器对 复制链接链接已复制到粘贴板!
您可以在跨越多个位置的 AMQ 组件中使用更复杂的拓扑。例如,您可以在每个四个位置上部署一对负载均衡的路由器。您可以在中心包含两个主路由器,以便在所有位置之间提供冗余连接。下图显示了跨越多个位置的部署示例。
图 3.7. 多个互连的路由器
更新于 2023-09-19