转自:https://www.cnblogs.com/threecha/p/13737421.html 从以下方面对kafka面试进行总结:基本原理架构/项目实践/生产者/消费者/协调者/存储层/控制器 基本原理架构 简单讲下什么是kafka[一句话概括/架构图] 消息队列选型 你们为什么不选用其他消息队列 ZK 在消息队列中的作用是什么 注册中心[作为共享存储保存了kafka集群和客户端的相关信息 [队列1对1/订阅1对多] kafka为什么这么快 追加方式写入 producer层选择分区并行写入数据[避免全量消息提交到协调阶段在计算分区] 使用消息batch[消息批 减少通讯次数] kafka follower如何与leader同步数据 kafka节点之间消息如何备份的 kafka消息是否会丢失为什么 kafka的lead选举机制是什么 kafka 的消息保障方式有那些 项目实践 ACK 0 实战 kafka技术内幕 kafka在公司项目实践
本篇博主带来的是Kafka的Producer API操作。 1. 消息发送流程 Kafka的Producer发送消息采用的是异步发送的方式。 完整代码 package com.buwenbuhuo.kafka.producer; import org.apache.kafka.clients.producer.KafkaProducer; 群起zookeeper和kafka [bigdata@hadoop002 zookeeper-3.4.10]$ bin/start-allzk.sh [bigdata@hadoop002 kafka] 启动一个consumer控制台 [bigdata@hadoop002 kafka]$ bin/kafka-console-consumer.sh --bootstrap-server hadoop002 代码 package com.buwenbuhuo.kafka.producer; import org.apache.kafka.clients.producer.*; import org.apache.kafka.common.serialization.StringSerializer
kafka、rabbitMQ等来实现推送更新Redis! 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几? 优化的key大小 尽可能使用Hash,hash占用空间少; 选择内存占用和效率更好的数据结构zipList kafka 有几种数据保存策略 Kafka Broker默认的消息保留策略是:要么保留一定时间
4.6 消息分发语义 在了解了生产者和消费者的工作方式之后,我们来讨论Kafka在生产者和消费者之间提供的语义保证。 Kafka的语义很直接。在发布消息时,我们有一个消息被“提交”到日志的概念。一旦提交已经发布的消息,只要把消息复制到分区的broker保持“活动”,它就不会丢失。 从0.11.0.0开始,Kafka还支持幂等传递选项,该选项保证重新发送不会在日志中导致重复条目。
Kafka的设计模式主要基于事务日志设计。 2. Kafka中有哪几个组件? 主题:Kafka主题是一堆或一组消息。 生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。 答:消费者组的概念是Apache Kafka独有的。基本上,每个Kafka消费群体都由一个或多个共同消费一组订阅主题的消费者组成。 5. ZooKeeper在Kafka中的作用是什么? 为什么Kafka技术很重要? 答:Kafka有一些优点,因此使用起来很重要: 高吞吐量:我们在Kafka中不需要任何大型硬件,因为它能够处理高速和大容量数据。 9. 副本和ISR扮演什么角色? 答:基本上,复制日志的节点列表就是副本。特别是对于特定的分区。但是,无论他们是否扮演领导者的角色,他们都是如此。 此外,ISR指的是同步副本。 Kafka : 单机吞吐量10万级别,这是kafka最大的优点,就是吞吐量高。
Kafka 基本概念和架构 问题 简单讲下 Kafka 的架构? Kafka 是推模式还是拉模式,推拉的区别是什么? Kafka 如何广播消息? Kafka 的消息是否是有序的? kafka-configs.sh:配置管理脚本 kafka-console-consumer.sh:kafka 消费者控制台 kafka-console-producer.sh:kafka 生产者控制台 关于 ISR,还有一个常见的面试题目是如何判断副本是否应该属于 ISR。 所以理解这些配置背后的实现原理,可以让我们在实践中懂得如何使用和优化 Kafka。既可面试造火箭,也可以实战造火箭。 ” 零拷贝 “哈哈,这个我面试被问到过。可惜答得一般般,唉。 ” 什么是零拷贝?
kafka事务机制 kafka的事务机制,是kafka实现端到端有且仅有一次语义(end-to-end EOS)的基础;事务涉及到 transactional producer 和transactional 的事务机制,在底层依赖于幂等生产者,幂等生产者是kafka事务的必要不充分条件; 事实上,开启kafka事务时,kafka会自动开启幂等生产者; kafka事务支持的设计原理 Transaction Coordinator log是kakfa的一个内部topic, 所以kafka可以通过内部的复制协议和选举机制(replication protocol and leader election processes),来确保 Transaction Coordinator还负责将事务写入kafka内部的一个topic,这样即使整个服务重启,由于事务状态得到保存,正在进行的事务状态可以得到恢复,从而继续进行; kafka事务机制下读写流程 全局一致的transactional.id维护 transactional.id在kafka的事务机制中扮演了关键的角色,kafka正是基于该参数来过滤掉僵尸生产者的 (fencing out zombies
java中的保留字,现在没有在java中使用。 ✎二、必须要知道的运行时异常 ArithmeticException 是出现异常的运算条件时,抛出此异常。 例如,一个整数“除以零”时,抛出此类
问题2:Kafka中有哪几个组件? 主题:Kafka主题是一堆或一组消息。 生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。 消费者:Kafka消费者订阅了一个主题,并且还从主题中读取和处理消息。 经纪人:在管理主题中的消息存储时,我们使用Kafka Brokers。 问题8:如何保证kafka顺序消费 这个在我看来是一个伪命题,如果要保证顺序消费为啥要用kafka呢,只是需要做到异步或者解耦? partition、n个线程,这里生产时需要根据需求将需要排序的数据发送到指定的message key 问题9:kafka为何这么快 Kafka 实现了零拷贝原理来快速移动数据,避免了内核之间的切换。 Kafka 可以将数据记录分批发送,从生产者到文件系统(Kafka 主题日志)到消费者,可以端到端的查看这些批次的数据。
第 7 章 Kafka 面试题 7.1 面试问题 Kafka 中的 ISR(InSyncRepli)、OSR(OutSyncRepli)、AR(AllRepli)代表什么? Kafka 中的 HW、LEO 等分别代表什么? Kafka 中是怎么体现消息顺序性的? Kafka 中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么? 当你使用 kafka-topics.sh 创建(删除)了一个 topic 之后,Kafka 背后会执行什么逻辑? Kafka 有内部的 topic 吗?如果有是什么?有什么所用? Kafka 分区分配的概念? 简述 Kafka 的日志目录结构? 如果我指定了一个 offset,Kafka Controller 怎么查找到对应的消息? 聊一聊 Kafka Controller 的作用? Kafka 中有那些地方需要选举?
什么是Kafka? Kafka中有哪几个组件? 主题(Topic):Kafka主题是一堆或一组消息。 生产者(Producer):在Kafka,生产者发布通信以及向Kafka主题发布消息。 Kafka系统工具有哪些类型? Kafka迁移工具:它有助于将代理从一个版本迁移到另一个版本。 Mirror Maker:Mirror Maker工具有助于将一个Kafka集群的镜像提供给另一个。 Kafka可以接收的最大消息大小约为1000000字节。 Kafka的优点有那些? 高吞吐量:我们在Kafka中不需要任何大型硬件,因为它能够处理高速和大容量数据。 低延迟:Kafka可以轻松处理这些消息,具有毫秒级的极低延迟,这是大多数新用例所要求的。 容错:Kafka能够抵抗集群中的节点/机器故障。 耐久性:由于Kafka支持消息复制,因此消息永远不会丢失。
kafka具备的分布式、高吞吐、高可用特性,以及所提供的各种消息消费模式可以保证在一个多节点集群环境里消息被消费的安全性:即防止每条消息遗漏处理或重复消费。 换句话说就是在分布式运算环境里kafka的消息消费是能保证唯一性的。 但是,保证了消息读取唯一性,消息的处理过程如果也放到分布式运算环境里仍然会面对数据完整性(data integrity)问题。 toMat(Sink.fold(0) { (accu, e) => if (e) accu + 1 else accu })(Keep.right) .run() 在上面的例子里,从kafka 这也应该是我们使用kafka的初衷嘛。在分布式环境里上面的这段代码等于是在多个节点上同时运行,同样会产生像多线程并行运算所产生的问题。 case x if (x >= '6' && x <= '8') => occur(2) = occur(2) + 1 case x if (x == '9'
Angular v8+面试系列 Angular 面试题汇总1-基本知识 Angular 面试题汇总2-Component/Service Angular 面试题汇总3-单元测试 目录 Angular ---- Angular v8+面试系列 Angular 面试题汇总1-基本知识 Angular 面试题汇总2-Component/Service Angular 面试题汇总3-单元测试 版权声明
本篇给大家总结了20道Kafka知识点或者说面试题,持续更新中... 1.kafka的3个关键功能? 发布和订阅记录流,类似于消息队列或企业消息传递系统。 以容错的持久方式存储记录流。 处理记录流。 2.kafka通常用于两大类应用? 建立实时流数据管道,以可靠地在系统或应用程序之间获取数据 构建实时流应用程序,以转换或响应数据流 3.kafka特性? 消息持久化 高吞吐量 扩展性 多客户端支持 Kafka Streams 安全机制 数据备份 轻量级 消息压缩 4.kafka的5个核心Api? Kafka集群中,一个kafka实例被称为一个代理(Broker)节点。 6.什么是Producer(生产者)? 消息的生产者被称为Producer。 消息的消费者,从kafka集群中指定的主题读取消息。 8.什么是Topic(主题)? 主题,kafka通过不同的主题却分不同的业务类型的消息记录。 9.什么是Partition(分区)?
在 0.11 版 本以前的 Kafka,对此是无能为力的,只能保证数据不丢失,再在下游消费者对数据做全局 去重。对于多个下游应用的情况,每个都需要单独做全局去重,这就对性能造成了很大影响。 0.11 版本的 Kafka,引入了一项重大特性:幂等性。所谓的幂等性就是指 Producer 不论 向 Server 发送多少次重复数据,Server 端都只会持久化一条。 幂等性结合 At Least Once 语 义,就构成了 Kafka 的 Exactly Once 语义。 ack就会为-1; Kafka的幂等性实现其实就是将原来下游需要做的去重放在了数据上游。 开启幂等性的Producer在初始化的时候会被kafka集群分配一个PID,发往同一Partition的消息会附带Sequence Number。
Java 语言本身并不支持运算符重载,“+”和“+=”是专门为 String 类重载过的运算符,也是 Java 中仅有的两个重载过的运算符。
Kafka 高水位(简称 HW)是 Kafka 中非常重要的一个概念,今天来聊一聊 HW。 1 HW 简介 HW 是 Kafka 中 Offset 的一个值,HW 作为一个边界,Offset 小于 HW 的消息被称为已提交消息,这部分消息可以被消费者进行拉取消费,大于等于 HW 的消息被称为未提交消息 2 LEO 简介 Kafka 中跟 Offset 相关的还有一个重要概念叫 LEO(Log End Offset)。 3 HW 更新机制 对于 Kafka 的一个分区来说,分区的所有副本都有 HW 和 LEO 这 2 个重要属性,不光是 Leader 副本。
Kafka Kafka集群leader选举 Kafka创建副本的2种模式——同步复制和异步复制 同步复制流程 异步复制流程 Kafka判断一个broker节点是否存活 Kafka生产者发送消息确认机制( ack机制) KafkaISR机制 leader如何动态维护ISR Kafka集群leader选举 在kafka集群中,第一个启动的broker会在zk中创建一个临时节点/controller让自己成为控制器 Kafka创建副本的2种模式——同步复制和异步复制 Kafka动态维护了一个同步状态的副本的集合(a set of In-Sync Replicas),简称ISR,在这个集合中的节点都是和leader 既然kafka支持副本模式,那么其中一个Broker里的挂掉,一个新的leader就能通过ISR机制推选出来,继续处理读写请求。 生产者没有收到leader的ack回应会重试投递,会造成数据重复 kafKa消费消息主要是依靠偏移量进行消费数据的,偏移量是一个不断自增的整数值,当发生重平衡的时候,便于用来恢复数据。
点击关注公众号,Java干货及时送达 前言 本文针对解决Kafka不同Topic之间存在一定的数据关联时的顺序消费问题。 1、问题引入 kafka的顺序消费一直是一个难以解决的问题,kafka的消费策略是对于同Topic同Partition的消息可保证顺序消费,其余无法保证。 另外,Kafka 系列面试题和答案全部整理好了,微信搜索Java技术栈,在后台发送:面试,可以在线阅读。 3、实现方案 消息发送: kafkaTemplate.send("TOPIC_INSERT", "1"); kafkaTemplate.send("TOPIC_UPDATE", "1"); 最新 Kafka 面试题整理好了,大家可以在Java面试库小程序在线刷题。
Kafka 0.9.0版本以后,这些数据维护在kafka的_consumer_offsets这个topic下。 因此,我们可以通过下面的工具脚本将消费者组的位移进行重置: bin/kafka-consumer-groups.sh --bootstrap-server kafka1:9092,kafka2:9092 Kafka消费能力不足 如果是Kafka消费能力不足,可以考虑给Kafka增加Topic的分区数,并同步增加消费者Consumer的实例数,谨记:分区数=消费者数(二者缺一不可)。 例如,下面通过kafka-topics.sh进行某个topic的分区数修改为5个(假设之前只有4个): bin/kafka-topics.sh --bootstrap-server kafka1:9092 ,kafka2:9092,kafka3:9092 --alter --topic test --partitions 5 注意:分区数可以增加,但是不能减少!