消费者组(Consumer Group): 每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
Broker:
一个单独的 server 就是一个 Broker;
主要工作:接收生产者发过来的消息,分配 offset,并且保存到磁盘中;
Cluster&Controller:
多个 Broker 可以组成一个 Cluster,每个集群选举一个 Broker 来作为 Controller,充当指挥中心
Controller 负责管理分区的状态,管理每个分区的副本状态,监听 ZooKeeper 中数据的变化等工作
保留策略和日志压缩:
不管消费者是否已经消费了消息,KafKa 都会一直保存这些消息(持久化到磁盘);
通过保留策略,定时删除陈旧的消息;
日志压缩,只保留最新的 Key-Value 对。
关于副本机制:(加分点)
ISR 集合 :表示当前 “可用” 且消息量与 Leader 相差不多的副本集合。满足条件如下:
副本所在节点必须维持着与 ZooKeeper 的连接;
副本最后一条信息的 offset 与 Leader 副本的最后一条消息的 offset 之间的差值不能超过指定的阈值。
深入浅出理解基于 Kafka 和 ZooKeeper 的分布式消息队列
HW&LEO:
HW 标记了一个特殊的 offset,当消费者处理消息的时候,只能拉取到 HW 之前的消息;
HW 也是由 Leader 副本管理的;
LEO(Log End Offset)是所有副本都会有的一个 offset 标记。
ISR、HW 和 LEO 的工作配合:
producer 向此分区中推送消息;
Leader 副本将消息追加到 Log 中,并且递增其 LEO;
Follower 副本从 Leader 副本中拉取消息进行同步;
Follower 副本将消息更新到本地 Log 中,并且递增其 LEO;
当 ISR 集合中的所有副本都完成了对 offset 的消息同步,Leader 副本会递增其 HW
KafKa 的容灾机制:通过分区的副本 Leader 副本和 Follower 副本来提高容灾能力。
小结:请小伙伴根据自己的简历自行准备学习大数据相关知识点。
Linux 常见命令
作者对这一方面不是很精通,知识点来源于网络总结以及面试官的提问,仅供小伙伴参考。
01. grep、sed 以及 awk 命令
解析:awk 命令如果可以掌握,是面试中的一个 加分点。
02. 文件和目录:
pwd 显示当前目录
ls 显示当前目录下的文件和目录:
ls -F 可以区分文件和目录;
ls -a 可以把隐藏文件和普通文件一起显示出来;
ls -R 可以递归显示子目录中的文件和目录;
ls -l 显示长列表;
ls -l test 过滤器,查看某个特定文件信息。可以只查看 test 文件的信息。
03. 处理文件方面的命令有:touch、cp、 In、mv、rm、
04. 处理目录方面的命令:mkdir
05. 查看文件内容:file、cat、more、less、tail、head
06. 监测程序命令:ps、top
eg. 找出进程名中包括 java 的所有进程:ps -ef | grep java
top 命令 实时监测进程
top 命令输出的第一部分:显示系统的概括。
第一行显示了当前时间、系统的运行时间、登录的用户数和系统的平均负载(平均负载有 3 个值:最近 1min 5min 15min);
第二行显示了进程的概要信息,有多少进程处于运行、休眠、停止或者僵化状态;
第三行是 CPU 的概要信息;
第四行是系统内存的状态。
07. ps 和 top 命令的区别:
ps 看到的是命令执行瞬间的进程信息 , 而 top 可以持续的监视;
ps 只是查看进程 , 而 top 还可以监视系统性能 , 如平均负载 ,cpu 和内存的消耗;
另外 top 还可以操作进程 , 如改变优先级 (命令 r) 和关闭进程 (命令 k);
ps 主要是查看进程的,关注点在于查看需要查看的进程;
top 主要看 cpu, 内存使用情况,及占用资源最多的进程由高到低排序,关注点在于资源占用情况。
08. 压缩数据
tar -xvf 文件名;
tar -zxvf 文件名;
tar -cvzf 文件名。
09. 结束进程:kill PID 或者 kill all
结束语
至此,从十个不同的方面阐述了 Java 开发面试岗位中所涉及到的重要知识点。