转自:https://www.cnblogs.com/threecha/p/13737421.html 从以下方面对kafka面试进行总结:基本原理架构/项目实践/生产者/消费者/协调者/存储层/控制器 有那些消息模型 队列模型和发布订阅 kafka使用消费者组统一了上面2种消息模型。 时间戳] 2.client对ProducerRecord进行序列化 3.根据分区策略确定分区[无key轮询有key murmur2(key) mod PartitionNum] 4.将消息放入缓存区[每一个分区对应一个双端队列 2.sender线程可以使用单线程迭代 消费者 什么是管理者 管理者是消费者组中的概念,用于对同一个消费者组中的所有消费者进行协调。 说下2种消费模式 消费模式可分为订阅模式和分配模式 我们项目中有4个分区,使用的订阅模式 设置了4个消费者。
(2)读取binlog后分析 ,利用消息队列,推送更新各台的redis缓存数据。 kafka、rabbitMQ等来实现推送更新Redis! 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几? 2.ListIterator有add方法,可以向List中添加对象,而Iterator不能。 优化的key大小 尽可能使用Hash,hash占用空间少; 选择内存占用和效率更好的数据结构zipList kafka 有几种数据保存策略 Kafka Broker默认的消息保留策略是:要么保留一定时间 https://www.jianshu.com/p/7008d2a1e320 时间和大小不论那个满足条件,都会清空数据。
Kafka的设计模式主要基于事务日志设计。 2. Kafka中有哪几个组件? 主题:Kafka主题是一堆或一组消息。 生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。 它可以帮助: 1.轻松推送记录 2.可以存储大量记录,而不会出现任何存储问题 3.它还可以在记录进入时对其进行处理。 14. 你能用Kafka做什么? Kafka生产者客户端中使用了几个线程来处理?分别是什么? 2个,主线程和Sender线程。 Range 分区不会把主题看做一个整体进行划分 假设 有两个主题, T1(0,1,2), T2(0,1,2), 两个消费者组 (A,B) (C) A 消费者 订阅 T1 , B 订阅 T1, T2 A,B 进行轮询的分区有: T1 0 T1 1 T1 2 T2 0 T2 1 T2 3 Range : 按主题划分,先考虑谁订阅了这个主题,然后再进行划分 39. Kafka 如何保证数据的顺序性?
Kafka 就是通过消费组的方式来实现消息 P2P 模式和广播模式。 Broker:服务代理节点。Broker 是 Kafka 的服务节点,即 Kafka 的服务器。 关于 ISR,还有一个常见的面试题目是如何判断副本是否应该属于 ISR。 所以理解这些配置背后的实现原理,可以让我们在实践中懂得如何使用和优化 Kafka。既可面试造火箭,也可以实战造火箭。 比如:7200rpm 的磁盘平均旋转延迟大约为 60*1000/7200/2 = 4.17ms,而转速为 15000rpm 的磁盘其平均旋转延迟为 2ms。 ” 零拷贝 “哈哈,这个我面试被问到过。可惜答得一般般,唉。 ” 什么是零拷贝?
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
集群规划 node01 node02 node03 zk zk zk kafka kafka kafka 2、下载安装包并上传解压 通过以下地址进行下载安装包 node01 运行日志存放的路径 log.dirs=/export/servers/kafka_2.11-1.0.0/logs #topic 在当前 broker 上的分区个数 num.partitions=2 # server.properties 2>&1 & node02执行以下命令将kafka进程启动在后台 cd /export/servers/kafka_2.11-1.0.0 nohup bin/kafka-server-start.sh config/server.properties 2>&1 & node03执行以下命令将kafka进程启动在后台 cd /export/servers/kafka_2.11-1.0.0 nohup bin/kafka-server-start.sh config/server.properties 2>&1 & 三台机器也可以执行以下命令停止kafka集群 cd /export/servers/kafka
2、 异步 快递小哥打电话给我后需要一直在你楼下等着,直到我拿走你的快递他才能去送其他人的。快递小哥将快递放在小芳便利店后,又可以干其他的活儿去了,不需要等待你到来而一直处于等待状态。 问题2:Kafka中有哪几个组件? 主题:Kafka主题是一堆或一组消息。 生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。 如何判断节点是否存活 (1)节点必须可以维护和 ZooKeeper 的连接,Zookeeper 通过心跳机制检查每个节点的连 接 (2)如果节点是个 follower,他必须能及时的同步 leader 设置 heartbeat.interval.ms = 2s。 如果一定要做到顺序消费,肯定是可以的,但是这个浪费资源,因为kafka就是针对高并发大吞吐量而生,下面说一下顺序消费方案: 1、一个topic、一个partition、一个线程 2、一个topic、n个
第 7 章 Kafka 面试题 7.1 面试问题 Kafka 中的 ISR(InSyncRepli)、OSR(OutSyncRepli)、AR(AllRepli)代表什么? Kafka 中的 HW、LEO 等分别代表什么? Kafka 中是怎么体现消息顺序性的? Kafka 中的分区器、序列化器、拦截器是否了解?它们之间的处理顺序是什么? 1)会在 zookeeper 中的/brokers/topics 节点下创建一个新的 topic 节点,如:/brokers/topics/first 2)触发 Controller 的监听程序 3 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 并不支持主写从读,因为主写从读有 2 个很明 显的缺点: 数据一致性问题。数据从主节点转到从节点必然会有一个延时的时间窗口,这个时间 窗口会导致主从节点之间的数据不一致。
Angular v8+面试系列 Angular 面试题汇总1-基本知识 Angular 面试题汇总2-Component/Service Angular 面试题汇总3-单元测试 目录 Angular 端到端测试(e2e) Angular中的测试有哪些种,基于哪些测试框架 Angular的测试主要包括单元测试(Unit Test)和端到端测试(e2e)。 端到端测试(e2e):基于protractor。protractor是Angular专用的e2e框架。 什么是Karma? 在Angular中有什么作用? 将依赖项加到providers中 TestBed.configureTestingModule({ providers: [YourDependencyService] }); 端到端测试(e2e ---- Angular v8+面试系列 Angular 面试题汇总1-基本知识 Angular 面试题汇总2-Component/Service Angular 面试题汇总3-单元测试 版权声明
Kafka是分布式的,基于发布订阅的消息系统。 2 Broker(服务器端) Kafka的服务器端由被称为Broker的服务进程构成,即一个Kafka集群由多个Broker组成。 分区位移从0开始,假设一个生产者向一个空分区写入10条消息,则这10条消息的位移依次是0、1、2、…、9。 4 Topic 一个业务即一个Topic。 Kafka在后台还有定时任务会定期地检查老的日志段是否能够被删除,从而实现回收磁盘空间的目的。 这里再重点说说消费者。 点对点模型(Peer to Peer,P2P)和发布订阅模型。 在Kafka中实现这种P2P模型的方法就是引入了消费者组(Consumer Group)。所谓的消费者组,指的是多个消费者实例共同组成一个组来消费一组主题。
在上一篇文章中,我分析了Kafka的请求、响应流程,但留下了Selector的疑点。 Selector 读完上一篇文章,我们应当理解了Kafka Selector在内部维护了一个java nio Selector,变量名叫nioSelector。 ? 外部向Kafka Selector注册SocketChannel,其实都是注册到了java Selector上。 而Kafka Selector又是通过调用java Selector,来收集触发了I/O事件的Socket,从而对其执行I/O。 ?
背景 本节使用 docker-compose 来创建 kafka 容器。 2. --partitions 4 --zookeeper kafka_zookeeper_1:2181 --replication-factor 1 2、查看有哪些 topic $KAFKA_HOME/ bin/kafka-topics.sh kafka-topics --list --zookeeper kafka_zookeeper_1 3、查看 topic 详情 $KAFKA_HOME/bin/kafka-topics.sh 参数说明: --topic=test 指示了一个 topic 名称 --broker-list kafka_kafka_1:9092 指示了 kafka服务的地址 $KAFKA_HOME /bin/kafka-console-producer.sh --topic=topic123 --broker-list kafka_kafka_1:9092 2、接收信息 接收信息使用: kafka-console-consumer.sh
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消费消息主要是依靠偏移量进行消费数据的,偏移量是一个不断自增的整数值,当发生重平衡的时候,便于用来恢复数据。
本篇给大家总结了20道Kafka知识点或者说面试题,持续更新中... 1.kafka的3个关键功能? 发布和订阅记录流,类似于消息队列或企业消息传递系统。 以容错的持久方式存储记录流。 处理记录流。 2.kafka通常用于两大类应用? 建立实时流数据管道,以可靠地在系统或应用程序之间获取数据 构建实时流应用程序,以转换或响应数据流 3.kafka特性? 消息持久化 高吞吐量 扩展性 多客户端支持 Kafka Streams 安全机制 数据备份 轻量级 消息压缩 4.kafka的5个核心Api? Kafka集群中,一个kafka实例被称为一个代理(Broker)节点。 6.什么是Producer(生产者)? 消息的生产者被称为Producer。 实际写入到kafka集群并且可以被消费者读取的数据。每条记录包含一个键、值和时间戳。 12.kafka适合哪些场景? 日志收集、消息系统、活动追踪、运营指标、流式处理、时间源等。
在 0.11 版 本以前的 Kafka,对此是无能为力的,只能保证数据不丢失,再在下游消费者对数据做全局 去重。对于多个下游应用的情况,每个都需要单独做全局去重,这就对性能造成了很大影响。 0.11 版本的 Kafka,引入了一项重大特性:幂等性。所谓的幂等性就是指 Producer 不论 向 Server 发送多少次重复数据,Server 端都只会持久化一条。 幂等性结合 At Least Once 语 义,就构成了 Kafka 的 Exactly Once 语义。 ack就会为-1; Kafka的幂等性实现其实就是将原来下游需要做的去重放在了数据上游。 开启幂等性的Producer在初始化的时候会被kafka集群分配一个PID,发往同一Partition的消息会附带Sequence Number。
架构简化如下 日志采集客户端,负责日志数据采集,定时写受写入Kafka队列 Kafka消息队列,负责日志数据的接收,存储和转发 日志处理应用:订阅并消费kafka队列中的日志数据 2.5消息通讯 在J2EE架构模式中,有消息服务者模式,用于实现消息与应用直接的解耦。 4.1.1 P2P模式 P2P模式包含三个角色:消息队列(Queue),发送者(Sender),接收者(Receiver)。每个消息都被发送到一个特定的队列,接收者从队列中获取消息。 ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。 Kafka相关概念 Broker Kafka集群包含一个或多个服务器,这种服务器被称为broker[5] Topic 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。
优点:控制了流量 缺点:会让流程变慢 2、Kafka核心概念 生产者:Producer 往Kafka集群生成数据消费者:Consumer 往Kafka里面去获取数据,处理数据、消费数据Kafka的数据是由消费者自己去拉去 服务器2(kafka2):创建目录topic_a-1: 服务器3(kafka3):创建目录topic_a-2: 7、Kafka二分查找定位数据 Kafka里面每一条消息,都有自己的offset 原理比较了解,尤其是网络设计部分 Reactor网络设计模式1: Reactor网络设计模式2: Reactor网络设计模式3: Kafka超高并发网络设计: 9、Kafka冗余副本保证高可用 zookeeper集群 hadoop1 hadoop2 hadoop3 kafka集群 理论上来讲,我们不应该把kafka的服务于zk的服务安装在一起。但是我们这儿服务器有限。 14.8 group coordinator原理 面试题:消费者是如何实现rebalance的?
依赖 <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId > </dependency> 配置 spring: kafka: bootstrap-servers: 外网ip:9092 producer: retries: 0 batch-size: 16384 buffer-memory: 33554432 key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.apache.kafka.common.serialization.StringSerializer consumer: group-id value-deserializer: org.apache.kafka.common.serialization.StringDeserializer 生产者 消息实体类 @AllArgsConstructor
Kafka系列2:深入理解Kafka消费者 上篇聊了Kafka概况,包含了Kafka的基本概念、设计原理,以及设计核心。 本篇单独聊聊Kafka的生产者,包括如下内容: 生产者是如何生产消息 如何创建生产者 发送消息到Kafka 生产者配置 分区 生产者是如何生产消息的 首先来看一下Kafka生产者组件图 ? String> record = new ProducerRecord<>("Topic", "k", "v"); // 1 try { producer.send(record); // 2 // 1 @Override public void onCompletion(RecordMetadata metadata, Exception exception) { // 2 关注我的公众号,获取更多关于面试、技术的文章及福利资源。 添加描述