消息队列基础概念

消息队列

基础概念

常见的消息队列产品

  • ActiveMQ,是Apatche出品的、采用Java语言编写的、完全基于JMS1.1规范的、面向消息的中间件
  • RabbitMQ,采用Erlang语言实现的AMQP协议的消息中间件
  • RocketMQ,是阿里开源的、由Java语言编写的消息中间件,现已经捐献给了Apache基金会
  • ZeroMQ,基于C/C++开发的消息中间件
  • Kafka

功能维度

队列特性

  • 优先级队列
  • 延时队列
  • 重试队列
  • 死信队列

消息发送方式

  • 同步发送
  • 异步发送
  • 单向发送,不可靠消息发送方式,消息有丢失的风险,但效率最高,常用于日志等

发送数量

  • 批量发送
  • 单条发送

消费模式

  • Push(推)
    • 由Broker主动将消息推送给Consumer
    • 实时性高,但需要评估Consumer的消费能力,避免超出Consumer的处理范围
  • Pull(拉)
    • 由Consumer主动从Broker拉取消息
    • 实时性低,Consumer会根据自身的处理能力拉取消息

消息传递模式

  • 点对点(P2P,Point-To-Point)
  • 发布与订阅(Pub/Sub)

回溯消费

回溯消费是指消息在消费完成之后,还能再次消费之前被消费的消息

  • 使用场景
    • 索引恢复
    • 本地缓存重建
    • 业务补偿

消息堆积与持久化

  • 使用场景
    • 流量削峰填谷
  • 堆积方式
    • 磁盘堆积
    • 内存堆积

消息轨迹

消息审计

消息过滤

消息过滤是指按照既定规则为下游用户(Consumer)提供指定类别的消息

多租户

多重租赁技术,可以确保各用户间数据的隔离性。例如BabbitMQ可以支持多租户技术

消息队列常见协议

  • AMQP
  • MQTT
  • STOMP
  • XMPP

跨语言支持

是否支持多客户端语言(C、C++、Java、Go、PHP、Python等)

流量控制(Flow Control)

指发送方和接收方速度不匹配时,提供速度匹配服务来抑制发送速度

  • 实现方式
    • 滑动窗口
    • 令牌桶
    • Stop-And-Wait

消息顺序性

指的是保证消息的有序性

安全机制

  • 身份认证,指客户端与服务端连接进行身份认证,常见的认证方式:
    • SSL
    • SASL
    • TLS
  • 权限控制,指对服务端进行的操作的权限控制,包括客户端读写、集群控制等

消息幂等性

指的是一次和多次消费(重复消费)产生的结果是一样的

  • 解决方式
    • 在下游用户(Consumer)端,通过去重表进行保证

事务性消息

性能维度

吞吐量

影响性能的项

  • 内存、磁盘、CPU

  • 宽带、IO

  • 集群规模

  • 分区数与副本因子

  • 事务、顺序消息、定时消息、幂等性等

  • 日志、数据刷盘策略

可靠性和可用性

是否支持数据持久化与数据备份

运维管理

  • 资源申请、审核
  • 监控
  • 告警
  • 管理
  • 容灾
  • 部署
  • 社区活跃度以及生态

事件消息总线

简述

  • 事件总线是一种软件设计模式和架构,允许软件应用程序的组件或服务之间进行通信。它充当应用程序不同部分之间通信的中介,允许它们在不需要组件之间直接耦合的情况下进行通信和交换数据
  • 事件总线概念类似于消息队列,其中消息(也称为“事件”)被广播给订阅了特定类型事件的侦听器。事件总线模式支持组件之间的松散耦合,使得修改或替换组件更容易,而不会影响应用程序的其余部分
  • 事件总线使用各种技术实现,例如内存数据结构、消息队列或发布-订阅系统,具体取决于应用程序的具体要求

常见实现方式

  • Java 消息服务 (JMS):一种基于 Java 的消息传递标准,它为基于 Java 的事件总线实现定义了一个通用接口
  • Apache Kafka:一个开源的分布式事件流平台,通常用作大数据和流应用程序的高性能事件总线
  • RabbitMQ:一个实现高级消息队列协议 (AMQP) 的开源消息代理,通常用作微服务架构的事件总线
  • Microsoft Azure 事件网格:Microsoft Azure 提供的完全托管的事件路由服务,支持事件驱动的体系结构和无服务器应用程序
  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z先生09

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值