消息队列(三)|青训营笔记

119 阅读2分钟

Kafka

Databus

直接使用原生SDK会出现的问题

  • 客户端配置较为复杂
  • 不支持动态配置,更改配置需要停掉服务
  • 对于latency不是很敏感的业务,batch效果不佳

优点

  • 简化消息队列客户端复杂度
  • 解耦业务与Topic
  • 缓解集群压力,提高吞吐

Parquet

Apache Parquet是Hadoop生态圈中一种新型列式存储格式,它可以兼容Hadoop生态圈中大多数计算框架。被多种查询引擎支持

能直接在BMQ中将数据结构化,通过Parquet Engine,可以使用不同的方式构建Parquet格式文件

RocketMQ

使用场景

比如电商业务的注册、订单、库存、物流等,或者是业务的峰值时刻,比如秒杀活动、周年庆、定期特惠等

基本概念

Topic: 逻辑队列

Message: 消息体

Tag: 标签

ConsumerQueue: 分区

Producer: 生产者

Producer Group: 生产者集群

Consumer: 消费者

Consumer Group: 消费者集群

Nameserver: 集群控制器

架构

image-20230522231528361.png

存储模型

image-20230522231607731.png

高级特性

  • 在事务场景中可以保证事务,达成最终一致性
  • 延迟发送:可以定义消息稍后发送
  • 消费重试:在消费失败后可以进行消费重试重新进行消费
  • 死信队列:死信队列用于处理无法被正常消费的消息。当一条消息初次消费失败,消息队列RocketMQ会自动进行消息重试;达到最大重试次数后,若消费依然失败,则表明Consumer在正常情况下无法正确地消费该消息。此时,消息队列RocketMQ不会立刻将消息丢弃,而是将这条消息发送到该Consumer对应的特殊队列中。 消息队列RocketMQ将这种正常情况下无法被消费的消息称为死信消息,将存储死信消息的特殊队列称为死信队列。