今日学习,消息队列Message Queue | 青训营笔记

56 阅读2分钟

今日学习,消息队列-交换机。Fanout(广播)、Direct(定向)、Topic(通配符)

Topic可以理解为每个不同应用场景就是一个不同的Topic,其中的分区消息可以并发处理,互不干涉。

TIB -> IBM MQ/WebSphere -> MSMQ -> JMS -> AMQP/RabbitMQ -> Kafka -> RocketMQ -> Pulsar

  • Kafka:分布式、分区、多副本的日志提交服务,适合在高吞吐场景下使用。常用于处理日志信息、Metrics数据、用户行为(搜索、点赞、评论、收藏)等。

  • RocketMQ:低延迟、强一致、高性能、高可靠、万亿级容量和灵活的可扩展性,适合一些实时场景。常用于在线支付、在线交易、实时监控等。

  • Pulsar:下一代云原生分布式消息流平台,集消息、存储、轻量化的计算为一体,采用存算分离的架构设计。比Kafka和RocketMQ更具有弹性和可扩展性。

  • BMQ:兼容Kafka协议,存算分离,适合高吞吐的离线业务场景。旨在逐步替换掉对应的Kafka集群。

基本概念:

  1. 事务消息:可以实现基于两阶段提交的分布式事务。
  2. 延迟消息:将消息延时发送,有利于实现一些时间敏感的场景。
  3. 消费重试和死信队列:在消费失败后,可以进行多次重试,并将无法被处理的消息发送至死信队列。
  4. Topic可以理解为每个不同应用场景就是一个不同的Topic,其中的分区消息可以并发处理,互不干涉。
  5. 每个分片(partition)有多个副本(Replica),Leader Replica 将会从 ISR 中选出。多个副本分布在不同的集群上

场景问题

  • 系统崩溃 -> 解耦
  • 服务处理能力有限 -> 削峰
  • 链路耗时长尾 -> 异步
  • 日志如何处理 -> 先进入消息队列

RocketMQ

  • 数据流通过Producer发送给Broker集群,再由Consumer进行消费。
  • Broker节点有Master和Slave的概念。
  • NameServer为集群提供轻量级服务发现和路由。
  • 高级特性:  事务消息、重试和死信队列、延迟队列。

image.png