常见问题与性能优化 如何防止消息丢失生产者: ack设置成1 如果对消息防丢失要求非常高,可以配置ack=all,min.insync.replicas配置成分区备份数 消费者: 使用手动提交,业务处理完成才提交offset 防止消息重复消费生产者: 2022-08-21 HW与LEO HW,High Watermark,中文高水位。 LEO,Latest End Offset 如下图所示,假设当前有三个broker(3个ISR):broker-0为某个主题分区的leader,生产者已经生产到了offset为5的消 2022-08-21 Rebalance机制 当消费者启动之后,kafka会为消费者分配分区进行消费。当消费者和分区的关系发生了变化之后,就会重新分配分区给消费者,例如: 某个消费者挂了 来了个新的消费者 主题增加了分区 重新分配分区这个动作就叫做Rebalance。 Rebala 2022-08-17 Kafka控制器 什么是Kafka控制器在Kafka集群中,控制器主要处理: 分区Leader选举 分区状态管理 副本管理 等等 控制器选举当kafka集群启动时,每个broker都会到zookeeper上创建名为/controller的节点,但只有一个 2022-08-17 Java客户端使用 我们通常使用Kafka有两种方式,一种是通过Kafka自带的命令行工具,一种是通过Kafka提供的API。 Kafka提供了五类API: Producer API:生产者api Consumer API:消费者api Admin API: 2022-08-07 副本 前篇提过一个主题可以有多个分区,分布在多个broker上,但如果某个broker挂了,这个borker上的数据不就丢了吗? 为了解决这个问题,就有了副本的概念。 副本其实就是备份,我们可以在创建主题时指定副本数量。假设我们有三个broker 2022-08-05 主题与分区 kafka主题是以分区(Partition)的形式来存储的,什么意思呢,我们看下kafka的数据目录: 其中有一个目录是mytopic-0,这是我们之前创建的主题,这里的-0就是分区编号,目录中存放了数据文件: 我们使用--partit 2022-08-04 生产者与消费者 生产消费模型消息队列的使用者主要有两个角色,一个是生产者,一个是消费者。 顾名思义,生产者是生产数据的,而消费者是使用数据的。 创建主题一个kafka队列,可能有很多的生产者和消费者,为了能让不同的使用者能够区分出自己所需要的数据,因此有 2022-08-04 Kafka安装 单机部署安装JDK安装kafka依赖jdk和zookeeper,jdk的安装自行百度,如果是ubuntu,可以直接使用: sudo apt-get install -y openjdk-8-jdk 安装成功后可以使用java -versi 2021-08-06