Kafka
文章平均质量分 66
一只小小狗
大家好我是练习时长2年半的程序员
展开
-
Java KafkaConsumer消费者是如何管理TCP连接的? 何时建立?何时关闭?
Java KafkaConsumer消费者是如何管理TCP连接的? 何时建立?何时关闭?何时创建 TCP 连接?消费者程序会创建 3 类 TCP 连接何时关闭 TCP 连接?手动关闭自动关闭何时创建 TCP 连接?生产者在构建过程中会创建TCP连接,而消费者并不会。在kafka生产者中的构造器有这样一段代码,可能会造成this指针逃逸,就是在构造器中启动线程,有可能会导致预期和真实结果产生差异。kafka消费者 TCP 连接是在调用 KafkaConsumer.poll 方法时被创建的原创 2022-04-22 10:49:41 · 2559 阅读 · 0 评论 -
多线程开发Kafka消费者的方案和优劣
多线程开发消费者实例Kafka Java Consumer设计原理多线程方案1. 消费者程序启动多个线程2. 消费者程序使用单或多线程获取消息,同时创建多个消费线程执行消息处理逻辑。方案一的优势方案一的不足方案二的优势方案二的不足方案一主体实现方案二主体实现Kafka Java Consumer设计原理 Kafka0.10.1.0版本开锁后,KafkaConsumer就变成了双线程设计,即用户主线程和心原创 2022-04-19 23:53:11 · 2606 阅读 · 0 评论 -
CommitFailedException异常处理和预防
CommitFailedException异常处理和预防1.常见场景 max.poll.interval.ms超时1.1解决方案2.特殊场景 StandaloneConsumer独立消费者和消费者组同时使用CommitFailedException: Consumer 客户端在提交位移时出现了错误或异常,而且还是那种不可恢复的严重异常。当然1.常见场景 max.poll.interval.ms超时当消息处理的总时间超过预设的max.poll.interval.ms 参数就会发生Commit原创 2022-04-18 20:04:39 · 1962 阅读 · 0 评论 -
Subscription to topics, partitions and pattern are mutually exclusive java
订阅主题、分区和模式是相互排斥的Subscription to topics, partitions and pattern are mutually exclusive原因assign是手动分配分区而subscribe是自动分配分区两者API调用不能同时使用Kafka手动分区分配assign(Collection)不能和自动分区分配subscribe(Collection, ConsumerRebalanceListener)一起使用解决方案两者使用一者即可 if (Str原创 2022-04-11 17:34:47 · 2256 阅读 · 0 评论 -
Kafka consumer提交中的问题,如何选择?同步提交还是异步提交?
Kafka consumer提交中的问题1.自动提交2.手动提交2.1 enable.auto.commit值主动写为false2.2 并且主动调用API手动提交位移2.3 同步提交和异步提交2.3.1 同步提交的缺陷2.3.2 异步提交的缺陷2.3.3 将同步提交和异步提交相结合(commitSync 和 commitAsync 组合)2.3.4 Kafka Consmer 提供的一种避免大批量重新消费的API3.总结从用户角度来说“位移提交”分为自动提交和手动提交;从Consumer端角度来说原创 2022-04-10 00:01:46 · 1490 阅读 · 1 评论 -
Java KafkaProducer使用send()是线程安全吗?是否可以让同一个KafkaProducer实例在多个线程中共享?
同一个KafkaProducer实例在多个线程中共享这是完全允许的场景,因为KafkaProducer是线程安全的。这种情况下,多个线程共享此producer实例以及同一套消息缓冲区资源,即它们共同使用由buffer.memory参数指定的缓存,因此有可能比第一种情况更容易出现缓存溢出的情形。这么做的好处在于只需要创建一套资源即可。为什么是线程安全?Java KafkaProducer生产者是如何管理TCP连接的? 何时建立?何时关闭?首先Apache Kafka 的所有通信都是使用TCP,在最初的原创 2022-04-08 11:26:24 · 2283 阅读 · 0 评论 -
消费者组重平衡如何避免吗?Rebalance
消费者组重平衡如何避免吗?Rebalance1.了解“协调者” Coordinator2.kafka确定消费组的协调者所在Broker的算法有2个步骤步骤1步骤23.Rebalance的缺点3.1 理想情况下3.2 真实情况4.如何避免Rebalance 重平衡4.1 第一类非必要 Rebalance ,未能及时发送心跳,导致 Consumer 被“踢出”Group而引发的4.2 第二类非必要 Rebalance 是 Consumer 消费时间过长导致的4.3 如果还有问题就考虑GC问题1.了解“协调者”原创 2022-04-06 17:20:27 · 2094 阅读 · 0 评论 -
何时进行 Rebalance 重平衡?Rebalance缺点
何时进行 Rebalance 重平衡?group组成员数量发生变更,比如增加新的Consumer实例或者减少Consumer实例。订阅topic主题数量发生变更,比如当订阅了以T为开头字母的topic,现在新增了一个topic为满足此条件即改Group就会发生Rebalance//订阅consumer.subscribe(Pattern.compile("^T.*"));订阅主题的分区数发生变更。Kafka 当前只能允许增加一个主题的分区数。当分区数增加时,就会触发订阅该主题的所有 Gr原创 2022-03-31 13:17:33 · 307 阅读 · 0 评论 -
消费者组特性,Consumer数量控制,Rebalance是什么?
消费者组三个特性Consumer Group 下可以有一个或多个 Consumer 实例。这里的实例可以是一个单独的进程,也可以是同一进程下的线程。在实际场景中,使用进程更为常见一些。Group ID 是一个字符串,在一个 Kafka 集群中,它标识唯一的一个 Consumer Group。Consumer Group 下所有实例订阅的主题的单个分区,只能分配给组内的某个 Consumer 实例消费。这个分区当然也可以被其他的 Group 消费。理想情况下,Consumer 实例的数量应该等于该原创 2022-03-31 12:59:37 · 2009 阅读 · 0 评论 -
Kafka Consumer、Producer如何实现精确一次消费数据、生产数据
Kafka Consumer、Producer如何实现精确一次消费数据、生产数据3种信息交付可靠性保障幂等性 Producer作用范围事务型 ProducerConsumer如何设置总结3种信息交付可靠性保障最多一次(at most once):消息可能会丢失,但绝不会被重复发送。至少一次(at least once):消息不会丢失,但有可能被重复发送。精确一次(exactly once):消息不会丢失,也不会被重复发送。在性能上比较 最多一次>至少一次>精确一次(幂等性>原创 2022-03-23 19:51:27 · 3387 阅读 · 1 评论 -
Java KafkaProducer生产者是如何管理TCP连接的? 何时建立?何时关闭?
Java 生产者是如何管理TCP连接的为什么使用TCP?在什么时候会建立TCP连接?更新集群的元数据在何时发生何时关闭TCP ,最好如何关闭主动关闭,这样最好被动关闭 Producer 端参数connections.max.idle.ms为什么使用TCP?Apache Kafka 的所有通信都是基于 TCP 的,而不是基于HTTP 或其他协议。无论是生产者、消费者,还是 Broker之间的通信都是如此。你可能会问,为什么 Kafka 不使用HTTP 作为底层的通信协议呢?其实这里面的原因有很多,但原创 2022-03-23 14:38:22 · 3418 阅读 · 0 评论 -
Kafka 无消息丢失配置如何实现?
Kafka 无消息丢失配置如何实现?1.如何保证kafka消息不丢失?1.1“已提交”的消息 是什么?1.2有限度的持久化保证 是什么?2.kafka“消息丢失”案例2.1 生产者程序丢失数据2.1.1 问题描述:“发射后不管”2.1.2 问题描述:“数据过大”2.2 解决方案 使用自定义kafka回调类Callback2.3 消费者程序丢失数据3.最后总结3.1 Producer生产者3.1.1 (Producer) acks=all3.1.2 使用 producer.send(msg, callbac原创 2022-03-22 18:25:35 · 1193 阅读 · 0 评论 -
Kafka 生产者压缩算法是什么?何时压缩和解压?什么压缩性能好?
生产者压缩算法是什么?何时压缩?什么压缩性能好?何时压缩?在Broker和topic也可以配置Broker 端指定了和 Producer 端不同的压缩算法。Broker 端发生了消息格式转换。何时解压缩?什么压缩性能好?压缩(compression)是为了节省空间,并且减少I/O传输量。希望以较小的 CPU 开销带来更少的磁盘占用或更少的网络 I/O 传输。何时压缩?Kafka 中,压缩可能发生在两个地方:生产者端和 Broker 端。如果在生产者段定义压缩方式就这样写,开启GZIP压缩算法。官网原创 2022-03-18 16:47:11 · 1567 阅读 · 0 评论 -
Kafka生产者三种分区策略代码展示
三种分区策略轮询策略配置代码配置信息随机策略配置代码配置信息HashPartitioner (Key-ordering)策略配置代码配置信息分区策略可以自定义更据公司业务来制定轮询策略像下图这样平均的发送不同分区中,轮询策略有非常优秀的负载均衡表现,总可以能保证消费最大限度地被平分到所有分区上,也是最常用的分区策略。配置代码package cn.com.kaf.configuration;import org.apache.kafka.clients.producer.Partitioner;原创 2022-03-17 19:04:42 · 1002 阅读 · 0 评论 -
Kafka生产者消息为什么分区?
Kafka生产者消息为什么分区?主题下的每条消息只存在于其中的一个分区中,多个分区不会被多分保存。其实分区的作用就是提供负载均衡的能力,或者说对数据进行分区的主要原因,就是为了实现系统的高伸缩性并且不同的分区能够被放置到不同节点的机器上,而数据的读写操作也都是针对分区这个粒度而进行的,这样每个节点的机器都能独立地执行各自分区的读写请求处理。并且,我们还可以通过添加新的节点机器来增加整体系统的吞吐量。主题下的每条消息只存在于其中的一个分区中。我们创建的ProducerRecord对象包括主题名原创 2022-03-17 18:44:34 · 1342 阅读 · 0 评论 -
Kafka集群参数配置说明
Kafka集群参数配置说明Broker 端参数Broker 端参数# 指定了 Broker 需要使用的若干个文件目录路径。# 在线上生产环境中一定要为log.dirs配置多个路径,最好目录挂在到不同的物理磁盘上。# 1.可以提升读写性能,吞吐量更高。2.实现故障转移功能,将磁盘的数据转移到另一个上。# 比如/home/kafka/data1,/home/kafka/data2,/home/kafka/data3log.dirs: # 单个路径,它是补充上一个参数用的。一般不配置log.di原创 2022-03-16 16:21:35 · 1983 阅读 · 0 评论 -
Kafka选型 操作系统、磁盘、磁盘容量、宽带
Kafka选型 操作系统、磁盘、磁盘容量、宽带1.操作系统选型I/O 模型的使用数据网络传输效率社区支持度2.磁盘选型3.磁盘容量大小4.宽带大小1.操作系统选型I/O 模型的使用 阻塞式 I/O、非阻塞式 I/O、I/O 多路复用、信号驱动 I/O 和异步 I/O。每种 I/O 模型都有各自典型的使用场景,比如 Java 中 Socket 对象的阻塞模式和非阻塞模式就对应于前两种模型;而 Linux 中的原创 2022-03-16 14:34:56 · 2804 阅读 · 0 评论 -
Kafka的移动偏移量(JAVA Apache Kafka)
Kafka的移动偏移量1.pom依赖2.application.properties 配置文件3. 消费者 配置自动读取4. 偏移量工具7.测试1.pom依赖如果是springboot项目可以不指定版本,自动匹配 <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients --> <dependency> <groupId>org.apache.kafka</gro原创 2021-12-02 17:20:56 · 1529 阅读 · 0 评论 -
Kafka的生产和消费(JAVA Apache Kafka)
Kafka的生产和消费1.pom依赖2.application.properties 配置文件3. 消费者 配置自动读取4. 生产者 配置自动读取5. 消费者工具6.生产者工具7.测试 生产消费1.pom依赖如果是springboot项目可以不指定版本,自动匹配 <!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients --> <dependency> <groupId>原创 2021-12-01 19:26:16 · 1220 阅读 · 0 评论 -
Kafka 特性 使用场景 技术优势
Kafka特性使用场景技术优势特性(1)高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个主题可以分多个分区,消费组对分区进行消费操作;(2)可扩展性:kafka集群支持热扩展;(3)持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失;(4)容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败);(5)高并发:支持数千个客户端同时读写;使用场景(1)日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一原创 2021-02-25 19:01:30 · 234 阅读 · 0 评论 -
Kafka概念概述 (MQ传统异步,消息队列好处,消费模式,kafka架构)
Kafka是什么?MQ传统应用场景之异步处理使用消息队列的好处消息队列的消费模式(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)(2)发布/订阅模式(一对多,消费者消费数据之后不会清除消息)。主动推送kafka基础架构kafkatopicPartitionleaderfollowerreplicationproducerconsumerConsumer Groupoffset偏移量是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。由Scala和Java编写,原创 2021-02-08 16:07:18 · 448 阅读 · 1 评论