今日学习,消息队列-交换机。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集群。
基本概念:
- 事务消息:可以实现基于两阶段提交的分布式事务。
- 延迟消息:将消息延时发送,有利于实现一些时间敏感的场景。
- 消费重试和死信队列:在消费失败后,可以进行多次重试,并将无法被处理的消息发送至死信队列。
Topic
可以理解为每个不同应用场景就是一个不同的Topic,其中的分区消息可以并发处理,互不干涉。- 每个分片(partition)有多个副本(
Replica
),Leader Replica 将会从 ISR 中选出。多个副本分布在不同的集群上
场景问题
- 系统崩溃 -> 解耦
- 服务处理能力有限 -> 削峰
- 链路耗时长尾 -> 异步
- 日志如何处理 -> 先进入消息队列
RocketMQ
- 数据流通过Producer发送给Broker集群,再由Consumer进行消费。
- Broker节点有Master和Slave的概念。
- NameServer为集群提供轻量级服务发现和路由。
- 高级特性: 事务消息、重试和死信队列、延迟队列。