这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天
思考问题:
- 系统崩溃
- 服务处理能力有限
- 链路耗时长尾
- 日志如何处理
解决方案:
- 解耦
- 削峰
- 异步
- 日志也可以放入 MQ 然后通过别的日志框架执行
MQ特点: 高吞吐、高并发、高可用
Kafka
什么场景使用
如何使用 Kafka
基本概念
- Topic
- Cluster
- Producer
- Consumer
- ConsumerGroup
Offset
Replica
Follower 努力保持与 Leader 一致,一旦差距过大,被踢出 ISR (In-Sync Replicas)
Producer 批量发送
批量发送减少 IO 次数,从而加强发送能力
Producer数据压缩
Broker 数据存储
Broker 顺序写提高写入效率
Broker 零拷贝
Consumer 任务怎么分配
- Low Level 手动配置任务的分配
- 缺点:机器故障后,存在任务起停
- High Level 自动分配(Rebalance)
Kafka 重启
不支持并发重启 思考:替换、扩容、缩容流程 替换类似重启
Kafka 负载均衡
Kafka 问题总结
- 运维成本高
- 没有负载不均衡的情况,解决方案复杂
- 没有自己的缓存,完全依赖 page cache
- controller 和 coordinator 和 broker 在同一进程中,大量 IO 会造成性能下降
BMQ
RocketMQ
场景
实时性任务
课后作业
- 搭建一个 kafka 集群
- 完成 hello world 发送与接受
- 关闭其中一个 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端逻辑
消息队列在字节
一些最佳实践的场景,包括数据展示
课后
-
消息队列的应用场景有哪些?
-
Kafka的哪些Feature让其可以支撑大吞吐写入的场景?
-
Kafka Consumer Rebalance的流程简述?
-
BMQ相比较Kafka有哪些优势?
-
RocketMQ有哪些特有的Feature?
-
RocketMQ事务消息处理流程简述?
-
你认为MQ后面应该如何发展?(开放题)