消息队列原理与实战 | 青训营笔记

62 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

思考问题:

  1. 系统崩溃
  2. 服务处理能力有限
  3. 链路耗时长尾
  4. 日志如何处理

解决方案:

  1. 解耦
  2. 削峰
  3. 异步
  4. 日志也可以放入 MQ 然后通过别的日志框架执行

MQ特点: 高吞吐、高并发、高可用

Kafka

什么场景使用

如何使用 Kafka

基本概念

  • Topic
  • Cluster
  • Producer
  • Consumer
  • ConsumerGroup

Offset

Replica

Follower 努力保持与 Leader 一致,一旦差距过大,被踢出 ISR (In-Sync Replicas)

Producer 批量发送

批量发送减少 IO 次数,从而加强发送能力

Producer数据压缩

Broker 数据存储

Broker 顺序写提高写入效率

Broker 零拷贝

Consumer 任务怎么分配

  1. Low Level 手动配置任务的分配
    1. 缺点:机器故障后,存在任务起停
  2. High Level 自动分配(Rebalance)

Kafka 重启

不支持并发重启 思考:替换、扩容、缩容流程 替换类似重启

Kafka 负载均衡

Kafka 问题总结

  1. 运维成本高
  2. 没有负载不均衡的情况,解决方案复杂
  3. 没有自己的缓存,完全依赖 page cache
  4. controller 和 coordinator 和 broker 在同一进程中,大量 IO 会造成性能下降

BMQ

RocketMQ

场景

实时性任务

课后作业

  1. 搭建一个 kafka 集群
  2. 完成 hello world 发送与接受
  3. 关闭其中一个 Broker,观察发送和接受情况,关闭一个 Broker 后,Kafka 集群会干什么

消息队列的前世今生

消息队列-Kafka

kafka使用场景,业务日志、用户行为数据、Metrics数据

基本概念,Producer、Cluster、Consumer、Topic、Partition

数据迁移、Offset、Partition选主

一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑

消息队列-BMQ

Kafka在使用中遇到问题

BMQ架构

BMQ各模块是如何工作的,Broker、Proxy、HDFS、MetaStorage

BMQ多机房容灾

消息队列-RocketMQ

RocketMQ使用场景

RocketMQ和Kafka对比

RocketMQ架构介绍,Producer、Broker、Nameserver、Consumer

一条消息从生产到消费是如何处理的,Producer端逻辑、Broker端逻辑、Consumer端逻辑

消息队列在字节

一些最佳实践的场景,包括数据展示

课后

  1. 消息队列的应用场景有哪些?

  2. Kafka的哪些Feature让其可以支撑大吞吐写入的场景?

  3. Kafka Consumer Rebalance的流程简述?

  4. BMQ相比较Kafka有哪些优势?

  5. RocketMQ有哪些特有的Feature?

  6. RocketMQ事务消息处理流程简述?

  7. 你认为MQ后面应该如何发展?(开放题)