Kafka
文章平均质量分 75
二十六画生的博客
国内Top5硕士,先后在京东、字节从事多年后端开发、大数据开发。
展开
-
Failed to send data to Kafka: Expiring 89 record(s) ...30005 ms has passed since last append
2021-06-08 02:05:37 java.lang.Exception: Failed to send data to Kafka: Expiring 89 record(s) for XXXXXXXXXXXXXX: 30005 ms has passed since last append at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducerBase.checkErroneous(FlinkKafkaProducerBa原创 2021-06-08 16:55:29 · 10863 阅读 · 0 评论 -
Kafka事务使用和编程示例/实例
一、概述 Kafka事务特性是指一系列的生产者生产消息和消费者提交偏移量的操作在一个事务中,或者说是一个原子操作,生产消息和提交偏移量同时成功或者失败。 注意:kafka事务和DB事务。 在理解消息的事务时,一直处于一个错误理解是,把操作db的业务逻辑跟操作消息当成是一个事务,如下所示: void kakfa_in_tranction(){ // 1.kafa的操作:读取消息或生产消息 kafkaOperation(); // 2.db操作 dbOperation()转载 2021-02-22 12:28:20 · 1747 阅读 · 2 评论 -
Flink两阶段提交协议 + Kakfa事务 保证端到端唯一 /TwoPhaseCommitSinkFunction / Kafka的幂等性和事务
文章目录Flink两阶段提交 1.EXACTLY_ONCE语义 2.Kafka的幂等性和事务 2.1 幂等性 2.2 事务 3.两阶段提交协议 4.TwoPhaseCommitSinkFunction 参考文献 Flink两阶段提交1.EXACTLY_ONCE语义EXACTLY_ONCE语义简称EOS,指的是每条输入消息只会影响最终结果一次,注意这里是影响一次,而非处理一次,Flink一直宣称自己支持EOS,实际上主要是对于Flink应用内部.转载 2021-02-22 11:28:38 · 4770 阅读 · 3 评论 -
kafka offset __consumer_offsets_ 原理/Compact 整理
我们在kafka的log文件中发现了还有很多以__consumer_offsets_的文件夹;总共50个;由于Zookeeper并不适合大批量的频繁写入操作,新版Kafka已推荐将consumer的位移信息保存在Kafka内部的topic中,即__consumer_offsetstopic,并且默认提供了kafka_consumer_groups.sh脚本供用户查看consumer信息。__consumer_offsets是 kafka 自行创建的,和普通的 topic 相同。它存在的目的之一...原创 2021-01-29 18:48:28 · 2871 阅读 · 0 评论 -
kafka auto.offset.reset / latest / earliest 详解
auto.offset.reset关乎kafka数据的读取,是一个非常重要的设置。常用的二个值是latest和earliest,默认是latest。一,latest和earliest区别1,earliest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费2,latest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据提交过offset,latest和earlie.原创 2021-01-29 18:41:49 · 11641 阅读 · 2 评论 -
kafka是如何保证消息不丢失的?生产端/消费端
前提条件任何消息组件不丢数据都是在特定场景下一定条件的,kafka要保证消息不丢,有两个核心条件。第一,必须是已提交的消息,即committed message。kafka对于committed message的定义是,生产者提交消息到broker,并等到多个broker确认并返回给生产者已提交的确认信息。而这多个broker是由我们自己来定义的,可以选择只要有一个broker成功保存该消息就算是已提交,也可以是令所有broker都成功保存该消息才算是已提交。不论哪种情况,kafka只对已提交的消息原创 2021-01-28 18:47:15 · 1217 阅读 · 0 评论 -
Kafka 设置分区副本数 replication.factor
副本数是1 ,意思是就一个分区,同时也是主分区副本数是2,意思是有2个分区,1个是主分区,1个是从分区副本数已把主分区数包含在内。设置replication.factor >= 3。这也是Broker端的参数。保存多份消息冗余。replication.factor,用来设置主题的副本数。每个主题可以有多个副本,副本位于集群中不同的broker上,也就是说副本的数量不能超过broker的数量,否则创建主题时会失败。比如partions 设置为20,replication...原创 2021-01-28 18:08:04 · 15811 阅读 · 3 评论 -
Kafka producer往broker发送消息的方式? 发送并忘记/同步发送/异步发送
1 send(msg) 发送并忘记2 send(msg).get() 同步发送,发完后等待返回结果,成功的话,再发下一次3send(msg,newClass()implements CallBack) 异步发送,发完后继续发送下一次,在回调函数中会对每次发送后返回的结果做处理。《Kafka权威指南》 啄木鸟...原创 2021-01-28 18:02:53 · 481 阅读 · 0 评论 -
Kafka中的选举有多少?
面试官在考查你Kafka知识的时候很可能会故弄玄虚的问你一下:Kafka中的选举时怎么回事?除非问你具体的哪种选举,否则问这种问题的面试官多半也是对Kafka一知半解,这个时候就是“弄死”他的时候。当然如果你没有一定的知识储备,那么就是你被“弄死”的时候。一般问这个问题,那么他肯定知道其中的一种,比如分区leader的选举。所谓分区leader的选举就是当ISR中的leader副本歇菜了,再重新选举一个的过程。对于这个问题就是你反客为主的机会,因为Kafka中的选举有多处,可不止分区leader的选举这转载 2021-01-21 19:11:48 · 181 阅读 · 0 评论 -
Kafka分区分配策略分析RangeAssigor/RoundRobinAssignor——重点:StickyAssignor
“为什么Kafka在RangeAssigor、RoundRobinAssignor的基础上,又新增了PartitionAssignor,它解决了什么问题?”背景用过Kafka的同学应该都知道Kafka的分区和消费组的概念。在Kafka中,每个Topic会包含多个分区,默认情况下一个分区只能被一个消费组下面的一个消费者消费,这里就产生了分区分配的问题。Kafka中提供了多重分区分配算法(PartitionAssignor)的实现:RangeAssigor、RoundRobinAssignor、..转载 2021-01-21 19:09:08 · 604 阅读 · 0 评论 -
Kafka的Controller Broker是什么
控制器组件(Controller),是 Apache Kafka 的核心组件。它的主要作用是在 Apache ZooKeeper 的帮助下管理和协调整个 Kafka 集群。集群中任意一台 Broker 都能充当控制器的角色,但是,在运行过程中,只能有一个 Broker 成为控制器,行使其管理和协调的职责。接下来,我们将讨论Controller原理和内部运行机制。通过本文你可以了解到:什么是Controller Broker Controller Broker是怎么被选举的 Controller Br转载 2021-01-21 18:53:37 · 518 阅读 · 0 评论 -
Zookeeper 在 Kafka 中的作用
leader 选举 和 follower 信息同步如上图所示,kafaka集群的 broker,和 Consumer 都需要连接 Zookeeper。Producer 直接连接 Broker。Producer 把数据上传到 Broker,Producer可以指定数据有几个分区、几个备份。上面的图中,数据有两个分区 0、1,每个分区都有自己的副本:0'、 1'。黄色的分区为 leader,白色的为 follower。leader 处理 partition 的所有读写请求,与此同时,fol转载 2021-01-21 18:50:48 · 235 阅读 · 0 评论 -
Kafka中的ISR、AR又代表什么?ISR的伸缩又指什么?/unclean.leader.election
SR and AR简单来说,分区中的所有副本统称为AR(Assigned Replicas)。所有与leader副本保持一定程度同步的副本(包括leader副本在内)组成ISR(In Sync Replicas)。 ISR 集合是 AR 集合的一个子集。消息会先发送到leader副本,然后follower副本才能从leader中拉取消息进行同步。同步期间,follow副本相对于leader副本而言会有一定程度的滞后。前面所说的 ”一定程度同步“ 是指可忍受的滞后范围,这个范围可以通过参数进行配置...转载 2021-01-21 18:16:31 · 620 阅读 · 1 评论 -
Kafka 消息队列如何保证顺序性?
主要思路:相同key值的消息写入同一个partition(partition内的消息是有序的),一个partition的消息只会被一个消费者消费。如果一个消费者是多个线程消费,则需要把pull来的消息按照key值写入不同的内存队列中,相同key值的消息写入同一个内存队列(内存队列内的消息是有序的),然后一个线程消费一个内存队列。1、rabbitMq问题分析:如图,data1 和 data2 是有顺序的,必须 data1 先执行,data2 后执行;这两个数据被不同的消费者消费到了,可能 d.转载 2021-01-20 21:56:40 · 2129 阅读 · 0 评论 -
Kafka删除历史消息的策略
1 删除策略Kafka日志管理器允许定制删除策略。目前的策略是删除修改时间在N天之前的日志(按时间删除),也可以使用另外一个策略:保留最后的N GB数据的策略(按大小删除)。为了避免在删除时阻塞读操作,采用了copy-on-write形式的实现,删除操作进行时,读取操作的二分查找功能实际是在一个静态的快照副本上进行的,这类似于Java的CopyOnWriteArrayList。Kafka消费日志删除思想:Kafka把topic中一个parition大文件分成多个小文件段,通过多个小文件段,就容易定.转载 2020-12-29 18:31:01 · 3465 阅读 · 2 评论 -
Kafka的分区分配策略
用过Kafka的同学应该都知道,每个 Topic 一般会有很多个 partitions。为了使得我们能够及时消费消息,我们也可能会启动多个 Consumer 去消费,而每个 Consumer 又会启动一个或多个streams去分别消费 Topic 对应分区中的数据。我们又知道,Kafka存在 Consumer Group 的概念,也就是group.id一样的 Consumer,这些 Consumer 属于同一个Consumer Group,组内的所有消费者协调在一起来消费订阅主题(subscrib...转载 2020-12-28 21:57:12 · 779 阅读 · 0 评论