Kafka 原理总结

Kafka 原理总结

前言:

研究了rocket-mq之后,一直想知道为什么kafka会这么火;终于有时间学习了一下这块的内容,简单总结以备以后查阅。

架构

Kafka 原理总结

其实这个架构和rocke-mq比较像,差异是rocke-mq使用了nameserver,而kafka使用zookeeper来做配置协调中心。

原理

主要涉及kafka从broker启动、生产者发送消息、broker分发消息到消费者消费消息的流程。

服务注册

/brokers/ids

Controller及其作用

/controller
/controller

生产者

  • Producer先序列化数据,按照topic分类(下面还有key/value),然后按照负载均衡算法push消息到topic的不同partition;
  • Producer发送消息的模式有三种: oneway(结果未知), sync(阻塞), async(有回调函数);
  • Producer可以设置Acks方式,可以设置为: 1. 发送后立即返回; 2. 等待主partition保存后返回; 3.等待副本patirion复制完成后返回;

Topic & Partition

  • Topic可以有多个partition,可以基于各种算法来将消息分类到不同partition,拥有同样key的消息会放到同一个partition;
  • partition是物理实现,可以指定partition的副本数;
  • Topic下的partition数量可以递增,但是不能递减;

Parition主备复制

  • kafka的高可用是通过topic的partition主备来实现的;
  • partition的副本负责从leader拷贝数据,数据中包含了offset等信息;
  • partition的副本会发送回复信息给leader,leader基于此来判断副本是否保持同步;
  • 只有同步的分区副本才能在leader挂后被选为新的leader;
  • 消费者只能看到已经被复制到ISR的消息,分区副本从leader复制消息之前,理论上leader是不允许该消息被consumer消费的,因为这样的消息不安全。

消费者组再均衡

  • Topic如果增加partition,或者consumer有变动,均需要重新分配分区(再均衡);
  • Consumer的变动是通过定期向broker协调者发送心跳报文来实现的,心跳报文中包含了群属关系以及分区所有权关系;
  • 在再均衡期间,消费者无法读取消息;
  • Consumer读取消息,并将offset发送到一个__consumer_offset的特殊topic中,该消息包含了每个分区的偏移量;
  • 一旦再均衡后,新的consumer可以继续按照之前的offset工作;

消息存储

  • Broker的消息保存策略为:1. 保存指定时间; 2. 保存达到某一Size;

那如何快速有效的学习并精通呢?

当真正开始学习的时候难免不知道从哪入手,导致效率低下影响继续学习的信心。

但最重要的是不知道哪些技术需要重点掌握,学习时频繁踩坑,最终浪费大量时间,所以有一套实用的视频课程用来跟着学习是非常有必要的。

为了让学习变得轻松、高效,今天给大家免费分享一套阿里架构师传授的一套教学资源。帮助大家在成为架构师的道路上披荆斩棘。

这套视频课程详细讲解了(Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构)等这些成为架构师必备的内容!

而且还把框架需要用到的各种程序进行了打包,根据基础视频可以让你轻松搭建分布式框架环境,像在企业生产环境一样进行学习和实践。

Kafka 原理总结

后台私信回复 “ 架构 ” (不是评论区) 就可以马上免费获得这套价值一万八的内部教材!

相关推荐