图文解说Kafka,看不懂你锤我!- 迷茫哥

图文解说Kafka,看不懂你锤我!

    • 什么是Kafka?
    • Kafka有哪些优缺点?
    • 什么是分布式消息中间件?
    • 为什么要使用分布式消息中间件?
    • Kafka有哪些专业名词?以及作用
    • Kafka实现原理?
    • 为什么要使用Kafka?
    • Kafka有哪些应用场景?
    • Kafka核心流程

什么是Kafka?

Kafka有哪些优缺点?

什么是分布式消息中间件?

为什么要使用分布式消息中间件?

Kafka有哪些专业名词?以及作用

Kafka实现原理?

为什么要使用Kafka?

Kafka有哪些应用场景?

Kafka核心流程

第一步:初始状态

  • 场景:迷茫哥在外卖平台上点了一份蜜汁手扒鸡,外卖平台通知外卖小哥帮我送过来。
  • LEO:图中LEO值为3
  • HW:图中HW值为3
    图文解说Kafka,看不懂你锤我!- 迷茫哥_第1张图片

第二步:消息投递

  • 场景:(1)订单生产者创建订单(订单编号、商品编号、用户编号等)(2)订单生产者创建消息3(指定主题,指定分区,订单信息)(3)往leader-partition中追加消息3(4)LEO+1,HW不变,消息3暂时不能被消费
  • LEO:图中LEO值为4
  • HW:图中HW值为3
    图文解说Kafka,看不懂你锤我!- 迷茫哥_第2张图片

第三步:副本同步

  • 场景:(1)Follower分区每隔一段时间主动同步数据(2)发送ACK给消息3的生产者(3)LEO不变,HW+1,消息3可以被消费
  • LEO:图中LEO值为4
  • HW:图中HW值为4
    图文解说Kafka,看不懂你锤我!- 迷茫哥_第3张图片图文解说Kafka,看不懂你锤我!- 迷茫哥_第4张图片

第四步:消息消费

  • 场景:(1)Broker主动推送消息到订阅分区的派单消费者(2)派单消费者给最近的外卖小哥创建派单信息(派单编号、订单编号、外卖小哥编号)
    问题:
    生产者如何保证幂等性?生产者投递的消息迟迟没有回应,那到底是消息没投递成功还是副本同步过慢?还是要发送ACK的时候MQ突然宕机了?
    重试,再投,消息一样也没事,就是占了个位置,反正做了消费者不重复消费,去重表

如何保证消息不被重复消费?(派单成功后,要去提交offset,就是返回ACK的时候,派单消费者突然宕机了,这时候派单已经成功,但是MQ消息还在,产生消息重复消费问题)或者说消费者提交offset成功了,主分区的Broker宕机了,从分区来不及同步删除消息
订单编号添加唯一约束,在派单处理的时候处理org.springframework.dao.DuplicateKeyException异常,提示消息已被消费,手动提交offset删除消息

事务问题
消息顺序性问题
什么是内存队列?

offset提交三种方式:(1)每N秒自动提交(2)手动同步提交(3)手动异步提交
Offset作用是什么?

你可能感兴趣的:(分布式消息中间件,kafka,zookeeper,中间件,java)