获得徽章 0
赞了这篇文章
#青训营 x 字节后端训练营# 今天学习了《消息队列前世今生》《消息队列-Kafka》
消息队列面向的问题及解决方法:
系统崩溃-解耦
服务处理能力有限-削峰
链路耗时长尾-异步
日志处理-日志存储
业界常用:Kafka(高吞吐)、RocketMQ(实时)、Pulsar、BMQ
Kafka
1.使用场景:搜索、直播、订单、支付等的日志信息、Metrics数据、用户行为等
2.使用方法:创建集群-新增topic-编写生产者逻辑-编写消费者逻辑
3.基本概念:
Topic: 逻辑队列,可以理解成每一个不同的业务场景就是一个不同的topic,对于这个业务来说,所有的数据都存储在这个topic中
Cluster: 物理集群,每个集群中可以新建多个不同的topic
Producer: 生产者,负责将业务消息发送到Topic当中
Consumer: 消费者,负责消费已经发送到topic中的消息
ConsumerGroup: 消费者组,不同组 Consumer 消费进度互不干涉
其他概念:
Partition: 通常topic会有多个分片,不同分片直接消息是可以并发来处理的,这样提高单个Topic的吞吐
Offset: 消息在 partition 内的相对位置信息,可以理解为唯一ID,在 partition 内部严格递增
Replica: 分片的副本,每个分片有多个 Replica,Leader Replica 将会从 ISR 中选出.
4.数据复制
Broker:Controller、Broker、Topic、Partition
5.kafka提高吞吐或稳定性的方法
Producer:批量发送、数据压缩
Broker:顺序写、消息索引、零拷贝
Consumer:Rebalance
6.kafka存在的问题
1)数据复制问题,运维成本高
2)对于负载不均衡的场景,解决方案复杂
3)没有自己的缓存,完全依赖 Page Cache
4)Controller 、 Coordinator、Broker 在同一进程中,大量 IO会造成其性能下降
消息队列面向的问题及解决方法:
系统崩溃-解耦
服务处理能力有限-削峰
链路耗时长尾-异步
日志处理-日志存储
业界常用:Kafka(高吞吐)、RocketMQ(实时)、Pulsar、BMQ
Kafka
1.使用场景:搜索、直播、订单、支付等的日志信息、Metrics数据、用户行为等
2.使用方法:创建集群-新增topic-编写生产者逻辑-编写消费者逻辑
3.基本概念:
Topic: 逻辑队列,可以理解成每一个不同的业务场景就是一个不同的topic,对于这个业务来说,所有的数据都存储在这个topic中
Cluster: 物理集群,每个集群中可以新建多个不同的topic
Producer: 生产者,负责将业务消息发送到Topic当中
Consumer: 消费者,负责消费已经发送到topic中的消息
ConsumerGroup: 消费者组,不同组 Consumer 消费进度互不干涉
其他概念:
Partition: 通常topic会有多个分片,不同分片直接消息是可以并发来处理的,这样提高单个Topic的吞吐
Offset: 消息在 partition 内的相对位置信息,可以理解为唯一ID,在 partition 内部严格递增
Replica: 分片的副本,每个分片有多个 Replica,Leader Replica 将会从 ISR 中选出.
4.数据复制
Broker:Controller、Broker、Topic、Partition
5.kafka提高吞吐或稳定性的方法
Producer:批量发送、数据压缩
Broker:顺序写、消息索引、零拷贝
Consumer:Rebalance
6.kafka存在的问题
1)数据复制问题,运维成本高
2)对于负载不均衡的场景,解决方案复杂
3)没有自己的缓存,完全依赖 Page Cache
4)Controller 、 Coordinator、Broker 在同一进程中,大量 IO会造成其性能下降
展开
评论
1