最新Kafka 入门知识,看这一篇就够了(上)_kafka入门,2024年最新网易资深Linux运维架构师

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

PS:topic 是逻辑上的概念,消息真正是存储到 partition 中去的

03 Kafka 分布式

Kafka 一开始就被设计成了分布式的架构,有集群(cluster)的概念

一个 Kafka 服务器被称为 broker,broker 接收 producer 的消息并存入磁盘,consumer 连接 broker 消费消息

若干个 broker 组成一个 cluster,集群内某个 broker 会成为集群控制器(cluster controller),负责管理集群,包括分配分区给 broker,监控 broker 等

在 cluster 中,一个分区由一个 broker 负责,这个 broker 是这个分区中的 leader,当然一个分区可以被复制到多个 broker 上实现冗余

当broker出现故障时还可以将其分区重新分配到其他的broker上,保证高可用性

在这里插入图片描述
Kafka是如何实现数据冗余的呢?

为了实现数据冗余,保证业务的高可用性,Kafka 引入了副本的概念

在 Kafka 集群里,副本有两种角色:

1、对外提供读写服务的称之为 leader;

2、不对外提供读写服务的称之为 follower,follower 会去同步 leader 的数据以此来保证数据一致性

Kafka 会尽量的把 partition 的副本均分在不同的 broker 上,并从中挑选一个作为 leader 副本

在这里插入图片描述
如上图所示:每个 broker 有两个主题,每个主题有两个分区,每个分区有一个副本,分别在不同的 broker 上

只要还存在一个副本,那么 producer 提交的数据就不会丢失,如果某些副本落后于 leader 副本,那么落后的副本就会被移出

如果 leader 副本所在的主机宕机,那么集群就会从剩余的 follower 副本中重新挑选一个副本作为新的 leader 副本,但不是所有的 follower 都有资格去竞选 leader 的(有些数据落后于 leader 太多的 follower 是不能参加竞选的)

为了能够更好地管理副本,Kafka 引入了 ISR——Kafka 动态维护的一组同步副本集合

每个 topic 下的 partition 都有自己的 ISR 列表,ISR 中所有的 follower 都与 leader 保持同步状态,而且 leader 也在 ISR 列表中,只有在自己 ISR 列表中的副本才能参与 leader 竞选

ISR 中的副本是如何保持同步的呢?

在这里插入图片描述
每个 partition 的副本中都会维护三个位移量:

  1. 起始位移:副本中第一条消息的位置
  2. 高水印标记(HW):表示副本最新一条被提交的消息的位置,这个值决定了 consumer 可以读到的消息最大范围,超过 HW 的消息(图中超过5,6)属于未提交消息,consumer 是读取不到的
  3. 日志末端位移(LEO),表示下一条代写入消息的位移,也就是说 LEO 指向的位置是没有消息的,当写入一条消息时 LEO 会加1

leader 和 follower 都具有这三个位移量,partition 的 HW 值就是 leader 的 HW 值,并且 leader 所在的 broker 上还保存了 follwer 的 HW 和 LEO 值

在这里插入图片描述
什么时候更新 LEO 值

我们知道,leader 所在的 broker 上保存了所有 follower 的 HW 和 LEO 值,同时 follower 所在的 broker 也保存了自己的 HW 和 LEO

producer 向 leader 写入数据,那么 leader 的 LEO 就会增加,follower 向 leader 同步数据并写入自己的日志文件时 follower 的 LEO 也会增加

leader 所在的 broker 保存的 follower 的 LEO 值是在 leader 收到 follower 的同步数据请求后和真正发送数据给 follower 之前进行更新的,而且发送同步数据请求的时候 follower 会发送自己的 HW 值,leader 所在的 broker 上保存的 follower 的 LEO 值就是 follower 同步数据是时发送的 HW 值

什么时候更新 HW 值

  • follower

follower 收到数据后需要写入日志里,然后就会更新自己的 LEO 值,更新完之后再去更新自己的 HW 值:leader 发送给 follower 的数据中包含 leader 自己的 HW,foloower 在更新完自己的 LEO 之后会将自己的 LEO 值和 leader 的 HW 值进行比较,取最小值来设置自己的 HW 值

  • leader

leader 更新 HW 有两个场景:

1、producer 写入新的消息后,leader 更新自己的 LEO 并尝试更新 HW

2、leader 从日志中读取了数据并发送给 follower后尝试更新 HW

以上两个场景都是尝试更新,而不是一定更新,因为更新原则是比较 leader 的 LEO 和其保存的所有 follower 的 LEO 值,小的那个就是 leader 的 HW 值

例如初始状态下(leader LEO 和 HW 分别为 0,follower 的 LEO 和 HW 也为0)如果写入了一条消息,那么 leader 的 LEO 进行了更新变成了1,但此时 follower 的 LEO 为 0(因为消息还没同步)比较 leader 的 LEO 和其保存的所有 follower 的 LEO 值,取最小值是 0,所以 leader 的 HW 也是 0,故不需要更新

(上述机制由于有时间差问题导致Follower需要进行两轮拉取才能完成HW的更新,所以会出现数据丢失情况,所以在0.11版本中引入了Leader Epoch机制来解决)

如何知道 leader 和 follower 之间数据不同步?

0.9版本之前是按照消息个数来做的,0.9之后是时间,默认是10秒,如果一个 Follower 落后Leader 的时间持续超过 10 秒则该 Follower 被认为不是同步的

这篇文章主要是Kafka入门,由于Kafka 的知识体系有点庞大,还涉及到了别的概念,后面我会逐步跟大家分享

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值