kafka超高频面试题(2)

16、kafka是如何做到高效读写

1)Kafka 本身是分布式集群,可以采用分区技术,并行度高

2)读数据采用稀疏索引,可以快速定位要消费的数据。(mysql中索引多了之后,写入速度就慢了)

3)顺序写磁盘

Kafka 的 producer 生产数据,要写入到 log 文件中,写的过程是一直追加到文件末端, 为顺序写。官网有数据表明,同样的磁盘,顺序写能到 600M/s,而随机写只有 100K/s。这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁头寻址的时间。

4)页缓存 + 零拷贝技术

零拷贝:Kafka的数据加工处理操作交由Kafka生产者和Kafka消费者处理。Kafka Broker应用层不关心存储的数据,所以就不用 走应用层,传输效率高

PageCache页缓存:Kafka重度依赖底层操作系统提供的PageCache功 能。当上层有写操作时,操作系统只是将数据写入 PageCache。当读操作发生时,先从PageCache中查找,如果找不到,再去磁盘中读取。实际上PageCache是把尽可能多的空闲内存都当做了磁盘缓存来使用

生产者将数据发送给kafka,kafka将数据交给Linux内核,Linux内核将数据放入自身操作系统的页缓存中,然后到一定值写入磁盘,假如消费者过来消费,直接从页缓存中,通过网卡发送给消费者,根本就没有去kafka的业务系统中获取数据,所以速度比较快。

跟这个问题非常像:mysql读取数据的速度为什么这么快!--buffer pool

17

<think>好的,用户之前问了数仓工程师的介绍,现在又需要实时计算的面试资料。这说明用户可能在准备面试,特别是数仓或数据工程方向的岗位,可能涉及实时处理。需要先明确实时计算的核心技术和常见问题。 用户身份可能是数仓工程师,希望扩展技能到实时领域,或者准备跳槽。需要覆盖实时计算的框架、理论、面试题和实际应用场景。 要确保回答结构清晰,分点列出,涵盖基础理论、技术栈、常见问题、实战案例和学习资源。可能用户需要快速掌握重点,所以需要重点突出,比如Flink、Kafka、窗口处理、容错机制等。 还要注意用户的深层需求,可能是想系统复习,或者针对面试查漏补缺。需要提供面试高频题和推荐资料,帮助用户高效准备。</think>以下是针对实时计算岗位的**系统性面试准备指南**,包含高频考点与实战技巧: --- ### **一、核心理论必考** 1. **流式计算模型** - **时间语义**:区分$事件时间$(Event Time)与$处理时间$(Processing Time) $$ \text{水位线}(Watermark) = \text{最大事件时间} - \text{允许延迟阈值} $$ - **窗口机制**:滚动窗口($Tumbling Window$)、滑动窗口($Sliding Window$)、会话窗口($Session Window$) 2. **容错与一致性** - **Exactly-Once语义**:如何通过$Checkpoint$(如Flink的Chandy-Lamport算法)实现 - **状态后端**:比较$MemoryStateBackend$与$RocksDBStateBackend$的存储差异 --- ### **二、技术栈重点** 1. **Flink核心考点** - **任务调度**:TaskManager与JobManager交互流程 - **反压机制**:通过$TCP反向压力$或$Credit-Based$流量控制 - **SQL优化**:解释`MATCH_RECOGNIZE`在复杂事件处理中的应用 ```java // Flink窗口统计示例 DataStream<Trade> stream = env.addSource(kafkaSource); stream.keyBy("productId") .window(TumblingEventTimeWindows.of(Time.minutes(5))) .aggregate(new AveragePriceAggregate()); ``` 2. **Kafka深度问题** - **ISR机制**:如何通过$in-sync replicas$保证数据可靠性 - **零拷贝**:`sendfile`系统调用如何提升传输效率 - **消费偏移管理**:`__consumer_offsets`主题的内部结构 --- ### **三、高频面试题集锦** 1. **场景设计题** - *"如何设计一个延迟≤1秒的实时风控系统?"* ➤ 参考答案:Kafka做缓冲层 + Flink CEP规则引擎 + Redis存储黑名单 2. **故障排查题** - *"Flink作业反压严重,如何定位瓶颈?"* ➤ 排查链:Metrics监控 → 线程堆栈分析 → 检查窗口/聚合函数 3. **源码理解题** - *"描述Flink Checkpoint执行过程中Barrier的传播逻辑"* ➤ 关键点:Barrier对齐、异步快照、状态持久化 --- ### **四、实战案例库** 1. **电商场景** - 实时计算UV:使用$HyperLogLog$去重,误差率控制在$1\%$以内 - 动态定价:通过$滑动窗口$统计最近5分钟商品点击率 2. **物联网场景** - 设备故障预测:用$CEP$检测连续三次温度超阈值事件 - 资源优化:基于$Process Function$实现自适应并行度调整 --- ### **五、学习资源推荐** 1. **官方文档** - [Apache Flink官方文档](https://nightlies.apache.org/flink/)(重点阅读State & Time章节) - [Kafka设计原理](https://kafka.apache.org/documentation/#design) 2. **开源项目** - **flink-learning**(GitHub 14k星):含完整练习案例 - **streaming-benchmarks**:对比Flink/Spark Streaming性能 3. **模拟面试工具** - **LeetCode**:刷SQL题(窗口函数类题目) - **DataCamp**:完成实时数据处理专项训练 --- **附加技巧**:面试中遇到模糊问题时可反问澄清,例如: “您提到的‘低延迟’具体是指99分位在100ms以内吗?这需要结合具体业务场景设计” (展现结构化思考能力) 如果需要某类题目的详细解析或模拟面试训练,可告知具体方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值