Kafka 原理总结
前言:
研究了rocket-mq之后,一直想知道为什么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性能优化、分布式架构)等这些成为架构师必备的内容!
而且还把框架需要用到的各种程序进行了打包,根据基础视频可以让你轻松搭建分布式框架环境,像在企业生产环境一样进行学习和实践。
后台私信回复 “ 架构 ” (不是评论区) 就可以马上免费获得这套价值一万八的内部教材!
相关推荐
guicaizhou 2020-08-01
rongwenbin 2020-06-15
Kafka 2020-09-18
yanghuashuiyue 2020-11-14
liuxingen 2020-11-13
wangying 2020-11-13
王谦 2020-11-03
huangwei00 2020-10-14
shenzhenzsw 2020-10-09
guicaizhou 2020-09-30
jiaomrswang 2020-09-23
jyj0 2020-09-21
guicaizhou 2020-09-15
hannuotayouxi 2020-08-20
amwayy 2020-08-03
yangyutong00 2020-08-01
weikaixxxxxx 2020-08-01
PoppyEvan 2020-08-01