Kafka
程序员面试那点事儿
互联网大厂校招、社招面试官,多年互联网大厂工作经验,分享校招、社招面试题、职场相关内容,互相交流经验
展开
-
学习导航
Kafka中的高水位和Leader Epoch机制原创 2021-01-06 21:51:45 · 79 阅读 · 0 评论 -
Kafka中的高水位和Leader Epoch机制
文章目录高水位是什么高水位的作用高水位更新高水位是什么水位是一个单调增加且表征最早未完成工作的时间戳蓝色Completed部分代表已经完成的工作红色In-Flight部分代表正在进行中的工作蓝色和红色两者的边界就是水位线Kafka中水位是通过消费位移来表示的,而不是时间戳。Kafka中的高水位一般缩小为HW高水位的作用标识分区下哪些消息是可以被消费者消费的帮助Kafka完成副本同步高水位:位移值等于高水位的消息也属于未提交消息LEO:Log End Offset,标识副本原创 2020-12-21 08:59:17 · 1599 阅读 · 0 评论 -
Kafka重平衡流程详解
文章目录触发条件通知机制消费者组状态机基本状态状态流转消费端重平衡流程JoinGroup请求SyncGroup请求Broker重平衡新成员入组组成员主动离组组成员崩溃离组重平衡时协调者对组内成员提交位移的处理。借助Kafka Broker端的Coordinator组件,让组内消费者实例就消费哪些主题分区达成一致。触发条件组成员数量变更(消费者组一次启动符合这个场景)订阅主题数量发生变化订阅主题分区数发生变化通知机制重平衡是如何通知其他消费者实例的:消费端的心跳线程当Coordinator原创 2020-12-17 10:10:29 · 604 阅读 · 1 评论 -
Kafka请求处理
文章目录如何处理请求Reactor模式Kafka模式Kafka中所有的请求都是通过 TCP 网络以 Socket 的方式进行通信的。如何处理请求顺序处理请求每个请求使用单独线程处理Reactor 模式Reactor模式Reactor 模式是事件驱动架构的一种实现方 式,特别适合应用于处理多个客户端并发向服务器端发送请求的场景Kafka模式...原创 2020-12-16 22:06:10 · 265 阅读 · 1 评论 -
Kafka日志存储
原创 2020-12-16 22:05:28 · 71 阅读 · 0 评论 -
Kafka生产者和TCP连接
为什么采用TCPKafka的所有通信都是基于TCP的,生产者、消费者、Broker之间的通信都是如此。可以利用TCP的多路复用请求和同时轮询多个连接的能力多路复用即TCP的多路复用请求会在一跳物理连接上创建若干个虚拟连接,每个虚拟连接复杂流转各自对应的数据流HTTP库在很多编程语言中略显简陋生产者创建构建生产者参数创建Kafka Producer对象实例使用Kafka Producer的send发送消息使用Kafka Producer的close关闭生产者并释放资源Prop原创 2020-11-28 10:31:49 · 881 阅读 · 0 评论 -
Kafka副本机制
文章目录副本的含义和好处Kafka副本定义Kafka副本机制的好处ISR(In-sync Replicas)Unclean领导者选举副本的含义和好处副本机制即备份机制,指分布式系统在多台网络互连的机器上有相同的数据拷贝数据冗余:增加了整体可用性高伸缩性:支持横向扩展(增加机器)提升读性能改善数据局部性:允许将数据放入离用户近的地方,降低系统延时对于Kafka来说,只能享受第一个好处Kafka副本定义副本是分区下的概念,本质上是一个只能追加写消息的提交日志。同一分区下所有副本保存有相同的原创 2020-12-15 08:36:58 · 229 阅读 · 0 评论 -
Kafka之CommitFailedException
文章目录发生时机场景1场景2发生时机Kafka在提交位移过程中出现了错误或者异常,而且是那种不可恢复的异常用户显式调用 KafkaConsumer.commitSync() 方法时场景1当消息处理的总时间超过预设的 max.poll.interval.ms 参数值 时,Kafka Consumer 端会抛出 CommitFailedException 异常。. 缩短单条消息处理的时间增加 Consumer 端允许下游系统消费一批消息的最大时长减少下游系统一次性消费的消息总数下游系统使用多原创 2020-12-14 09:13:25 · 233 阅读 · 0 评论 -
消费者消费进度监控怎么实现
文章目录消费者Lag监控方式Kafka自带命令行Kafka Java Consumer APIKafka JMX监控指标消费者Lag消费者Lag:监控消费者的滞后程度,滞后程度为消费者落后于生产者的程度。单位是消息数。正常Lag值很小,接近于0。Lag值过大存在问题:过大说明消费的速度远远小于生产的速度,会造成要消费的数据不在操作系统的页缓冲中了,那么Zero Copy技术使用就会打折扣,进一步拉大与生产者的差距,消费变得越来越慢。监控方式Kafka自带命令行$ bin/kafka-consu原创 2020-12-08 08:48:07 · 347 阅读 · 0 评论 -
Kafka消费者和TCP连接
文章目录创建TCP连接的时候发起FinCoordinator请求连接协调者时消费数据时创建多少TCP连接何时关闭TCP连接创建TCP连接的时候构建KafkaConsumer实例时是不会创建任何TCP连接的,在调用KafkaConsumer.poll方法时被创建,在poll方法内存有3个时机可以创建TCP连接发起FinCoordinator请求协调者:驻留在Broker内存中,负责消费组的组成员管理和位移管理消费者首次启动调用poll方法时,要向Kafka集群发送一个名为FindCoordinato原创 2020-12-07 09:21:02 · 537 阅读 · 0 评论 -
Kafka多线程开发消费者实例的两种方案
Java Consumer原理用户主线程:启动Consumer应用程序main方法的那个线程心跳线程:定期给对应的Broker机器发送心跳请求,标识消费者的存活性引入两个线程的目的是将消息的处理逻辑和消费者组成员存活性管理进行解耦在消费层面上,还是可以认为Comsumer是单线程的设计两种方案多线程,多实例消费者启动多个线程,每个线程维护专属的KafkaConsumer实例,负责完整的消息获取,处理流程获取消息与处理消息分离使用单或多个线程获取消息同时创建多个消费线程执行消息处理原创 2020-12-07 08:46:35 · 324 阅读 · 0 评论 -
Kafka 位移主题详解
文章目录老版本处理方式位移主题处理方式Kafka中的内部位移主题是_consumer_offsets。老版本处理方式自动或手动地将位移数据提交到 ZooKeeper 中保存,Consumer重启后,自动的从ZooKeeper中读取位移数据,从而在上次消费的地方继续消费。Kafka Broker不需要保存位移数据,减少了Broker端需要持有的状态空间,有利于实现高伸缩性。Zookeeper不适用这种高频的写操作位移主题处理方式Consumer 的位移数据作为一 条条普通的 K原创 2020-12-04 08:03:39 · 850 阅读 · 0 评论 -
消费组重平衡
文章目录Rebalance弊端避免Rebalance发生时机如何判断Consumer实例已挂几个参数不必要RebalanceRebalance是让一个Consumer Group下所有Consumer实例就如何消费所有分区达成共识的过程。Rebalance过程中,所有Consumer实例共同参与,在协调者组件的帮助下完成订阅主题分区的分配。整个过程中,所有的Consumer实例都不能消费任何消息,对消费者的TPS影响很大协调者:专门为Consumer Group服务,负责执行Rebalance、原创 2020-12-04 08:03:25 · 121 阅读 · 1 评论 -
消费者组是什么
文章目录消费者组是什么位移Rebalance触发条件消费者组是什么Consumer Group是Kafka提供的可扩展且具有容错性的消费者机制。Consumer Group有一个或多个Consumer实例,实例可以是一个单独的进程也可以是同一进程下的线程。Group ID 是一个字符串,在一个Kafka集群中,它唯一标识一个Consumer Group。Consumer Group下所有实例订阅的主题的单个分区,只能分配给组内某个Consumer实例消费。Kafka 使用 Consumer原创 2020-12-01 09:07:35 · 421 阅读 · 0 评论 -
幂等生产者和事务生产者
文章目录消息交付可靠性保障承诺幂等性Producer幂等性的方法幂等性的范围事务事务型 Producer 的方法消息交付可靠性保障承诺最多一次:消息可能丢失,但不会重复发送至少一次:消息不会丢失,但有可能被重复发送精确一次:消息不会丢失,也不会重复发送Kafka承诺至少一次:是Kafka默认的交付可靠性保障,当Producer出现网络抖动的时候,那么只能选择重试去发送相同的消息,这是Kafka默认的至少一次的可靠性保障。最多一次:关掉Kafka的重试即可。精确一次:需要幂等性和事务。原创 2020-11-30 09:09:34 · 193 阅读 · 0 评论 -
Kafka如何保证消息不丢之无消息丢失配置
文章目录已提交与有限度生产者丢失数据异步发送消息解决方式消费者丢失数据最佳实践已提交与有限度Kafka对已提交的消息做有限度的持久化保证。已提交消息:Kafka的若干个Broker成功接收到消息并写入日志文件后,告诉生产者已成功提交。已提交的定义如下一个Broker成功保存消息为已提交所有Broker都成功保存消息为已提交有限度的持久化保证:有限度的意思是假如有N个Broker,要想保证持久化,就至少有一个存活。生产者丢失数据异步发送消息当异步发送消息的时候,会立即返回,但是不能原创 2020-11-26 09:49:37 · 455 阅读 · 0 评论 -
生产者压缩算法
压缩是一种用时间换空间的做法,通过CPU时间去换磁盘空间和网络传输I/O 传输量。Kafka对消息的整个传递过程中:Producer 端压缩、Broker 端保持、Consumer 端解压缩如何压缩消息层次分为两层:消息集合和消息消息集合:包含若干条日志项,日志项是真正封装消息的地方。两种版本的消息V1版本中对多条消息进行压缩,然后保存到外层消息的消息体字段中V2版本对整个消息集合进行压缩。这个比V1版本好什么时候压缩生产端进行压缩Producer 启动后生产的每个消息集合都是原创 2020-11-24 09:31:22 · 171 阅读 · 0 评论 -
生产者消息分区机制原理剖析
为什么分区Kafka的三级架构:主题 - 分区 - 消息。负载均衡能力更好的实现业务级别的消息顺序发送分区策略决定生产者将消息发送到哪个分区的算法就叫做分区策略。可通过重写Partitioner接口的方式来实现自定义的分区算法。轮询策略Round-robin策略,即顺序分配。轮询策略有非常优秀的负载均衡表现,总是能保证消息最大限度的被平均分配到所有分区上,默认情况下它是最合理的分区策略,也是常用的分区策略。随机策略Randomness策略,随意的将消息放置到任意一个分区上,如下原创 2020-11-23 08:57:22 · 189 阅读 · 0 评论 -
Kafka基本功能和核心概念
文章目录是什么基本概念核心功能编码格式与传输协议三层消息架构持久化数据常见术语是什么基本概念Kafka是一款开源分布式消息引擎系统消息引擎系统:系统A将消息发送给消息引擎系统,系统B从消息引擎系统里读取A发送的消息,总结起来就两件事核心功能传输对象是消息如何传输消息编码格式与传输协议Kafka采用纯二进制的字节序列作为消息编码格式传输协议点对点模型发布 / 订阅模型三层消息架构主题层:每个主题可以有M个分区,每个分区可以配置N个副本分区层:每个分区的N个副本原创 2020-11-23 08:17:28 · 1309 阅读 · 2 评论 -
Kafka的特点和优势
高吞吐量、低延迟:每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。可扩展性:kafka集群支持热扩展持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)高并发:支持数千个客户端同时读写...原创 2020-11-13 21:48:06 · 311 阅读 · 0 评论 -
Kafka吞吐量高的原因
文章目录顺序读写Page Cache零拷贝分区+索引批量发送数据压缩顺序读写kafka的消息是是不断追加到本地磁盘文件末尾的,而不是随机的写入,这个特性使kafka可以充分利用磁盘的顺序读写性能。磁盘的顺序读写性能很高,一般而言要高出磁盘随机读写三个数量级,一些情况下磁盘顺序读写性能甚至要高于内存随机读写。顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写Page Cache为了优化读写性能,Kafka利用了操作系统本身的Page Cache,就是利用操作系统自身的内存原创 2020-11-09 21:24:34 · 290 阅读 · 0 评论 -
消息队列的使用场景
消息队列:是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件使用场景:异步处理用户注册成功后,发送注册邮件,再发送注册短信串行方式:将注册信息写入数据库成功后,向用户发送邮件,在发送注册短信,将结果放回给客户端并行方式:将注册信息写入数据库成功后,发送注册邮件的同时,发送注册短信,以上三个任务完成后,返回给客户端消息队列:将注册信息写入数据库成功后,注册信息写入消息队列,发送邮件和短信的消费者异步读取原创 2020-09-28 09:37:47 · 171 阅读 · 0 评论 -
Kafka基础原理
https://mp.weixin.qq.com/s/yH0NDocqb6oJhYf9R79uJw原创 2020-09-28 09:36:25 · 247 阅读 · 0 评论 -
Kafka
相关概念:是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费规模较大的网站中的所有动作流数据官网:kafka.apache.org优势: 高吞吐量:非常普通的硬件Kafka也可以支持每秒数百万的消息 支持通过Kafka服务器和消费机集群来区分消息 支持Hadoop并行数据加载关键概念:Broker:Kafka集群中的一台或多台服务器统称为brokerTopic:Kafka处理...原创 2018-04-04 20:42:28 · 162 阅读 · 0 评论