品牌网站建是啥意思,一号店网上商城,专业做淘宝网站,销客多分销小程序价格ActiveMQ高可用架构涉及常用功能整理 1. activemq的集群模式2. 镜像模式高可用系统架构和相关组件2.1 架构说明2.2 相关概念说明2.3 消息模型2.3.1 点对点2.3.2 发布订阅 3. activemq常用命令4. activemq配置集群5. 疑问和思考5.1 activemq的数据删除策略是怎样的#xff1f;5… ActiveMQ高可用架构涉及常用功能整理 1. activemq的集群模式2. 镜像模式高可用系统架构和相关组件2.1 架构说明2.2 相关概念说明2.3 消息模型2.3.1 点对点2.3.2 发布订阅 3. activemq常用命令4. activemq配置集群5. 疑问和思考5.1 activemq的数据删除策略是怎样的5.2 activemq希望一个数据能够被多个消费者消费该如何实现 6. 参考文档 探讨activemq的系统架构以及以及整体常用的命令和系统分析本文主要探讨高可用版本的activemq集群并基于日常工作中的沉淀进行思考和整理。更多关于分布式系统的架构思考请参考文档关于常见分布式组件高可用设计原理的理解和思考 1. activemq的集群模式
activemq通常只有2种模式架构 单机模式 通常activemq只是支持单机模式进行数据存储和提供服务这种模式下activemq不支持HA能力。 主从模式 为了解决单机模式下的高可用问题activemq能够搭建主从模式但是由于activemq本身不支持不同节点直接同步数据因此这种模式下activemq将数据保存在了远端的数据库。常用的架构如下 2. 镜像模式高可用系统架构和相关组件
2.1 架构说明
activemq的整体架构如下
相关核心的组件和角色作用如下
组件部署模式组件作用备注producer客户端部署生产者创建消息消息一般可以包含 2 个部分 消息体和标签broker多机部署它负责接收、存储和管理消息数据接收和存储消息数据activemq broker接收来自producer发送的消息并将这些消息存储在自己的磁盘上。consumer客户端部署消费者连接到 ActiveMQ 服务器订阅到队列。消费者消费一条消息时只消费消息的消息体payload在消息路由的过程中消息的标签会丢弃存入到队列中的消息只有消息体消费者只会消费到消息体也就不知道消息的生产者是谁当然消费者也不需要知道
镜像镜像队列本质上是一个HA模式的集群
Leader提供读写服务数据写入需要从Leader开始而后同步到Follower节点Follower提供读服务
普通模式配置镜像模式只需要进行如下配置即可。
# 所有队列exchangess都为镜像模式
activemqctl set_policy ha-all ^ {ha-mode:all}
Setting policy ha-all for pattern ^ to {ha-mode:all} with priority 0 for vhost / ...# # 所有队列queue都为镜像模式
activemqctl set_policy --priority 0 --apply-to queues mirror_queue ^ {ha-mode:exactly,ha-params:2,ha-sync-mode:automatic}2.2 相关概念说明
角色说明角色作用备注channel消息通道在客户端的每个连接里可建立多个 channel每个 channel 代表一个会话任务exchange消息交换机它指定消息按什么规则路由到哪个队列交换机提供了消息的路由能力根据不同的消息特性提供不同的路由策略routing key路由关键字exchange 根据这个关键字进行消息投递binding绑定它的作用就是把 exchange 和 queue 按照路由规则绑定起来vhost虚拟主机一个 broker 里可以开设多个 vhost用作不同用户的权限分离消息和权限设计都是基于vhost可以通过vhost配置多租户进行数据和权限隔离
2.3 消息模型
activemq的消息发布模型只有2种
点对点: 一条消息只能被消费一次消费后就会被删除发布者和消费者能够解耦发布/订阅 一条消息能够被多个消费者订阅消费者只能订阅到后续的消息不会维护消费位点因此消费者订阅的消息是可能会出现丢失的
2.3.1 点对点 在点对点通信模式中,应用程序由消息队列,发送方,接收方组成,每个消息队列都被发送到一个特定的队列, 接收者从队列中获取消息,队列保留这消息,直到他们被消费或者超时.
特点
每个消息只要一个消费者.发送者和接收者在时间上是没有时间的约束,即发送者在发送完消息后,不管接收者有没有接收消息,都不会影响发送方发送消息到消息队列中.发送方不管是否在发送消息接收方都可以从消息队列中去到消息.接收方在接收完消息之后需要向消息队列应答成功.### 2.3.2 发布订阅
2.3.2 发布订阅 在发布/订阅消息模型中,发布者发布一个消息,该消息是topic传递给所有的客户端。在该模式下,发布者和订阅者都是匿名的,即发布者与订阅者都不知道对方是谁.并且可以动态的发布和订阅Topic。Topic主要用于保存和传递消息,且会一直保存消息直到消息被传递给客户端.
特点
一个消息可以传递多个订阅者发布者和订阅者具有时间约束,这一点和上面的点对点模式是相反的. 针对某个主题(Topic)的订阅者.它必须创建一个订阅者之后,才能消费发布者的消息.而且是为了消费消息,订阅者必须保持运行的状态.为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅,这样,即使订阅者没有被激活(运行),他也能接收到发布者的消息.
3. activemq常用命令
#启动
activemq start#停止
activemq stop# 删除队列中的所有消息队列名称是FOO.BAR
activemq purge FOO.BAR# 显示默认broker的所有主题和队列统计信息
activemq dstat# 显示的主题统计信息
activemq dstat topics# 显示队列的统计信息
activemq dstat queuedtsat就是显示图形化中query的图。
Queue Size 表示queue的大小。 Producer表示生产者
Consumer 消费者
Enqueue 一共进入了多少队列
Dequeue 一共消费的多少队列4. activemq配置集群
参考文档 ActiveMQ高可用集群部署方案
5. 疑问和思考
5.1 activemq的数据删除策略是怎样的
ActiveMQ 提供了两种清除策略用于清理过期的消息
消费删除1个队列中的消息被消费后就会被主动删除删除策略Delete Policy该策略会直接删除过期的消息释放存储空间。可以通过设置 expiryDelay 参数来配置消息的过期时间。默认情况下消息在没有消费者消费的情况下会一直保留直到达到过期时间。移动策略Move Policy该策略会将过期的消息移动到一个指定的目标队列而不是直接删除。可以通过设置 deadLetterStrategy 参数来指定目标队列。移动策略可以用于日志记录和审计等需求以便在稍后分析过期消息。
这些清除策略可以单独或同时使用根据需要进行配置。请注意配置清除策略可能会影响 ActiveMQ 的性能和存储空间使用情况所以需要根据具体情况进行权衡和调整。
5.2 activemq希望一个数据能够被多个消费者消费该如何实现
只能使用发布订阅模式但是也通常要求消费者实时在线否则消费者可能无法消费到完整的数据。
6. 参考文档
暂无