摘要:一、增加分区 ### 创建主题:分区副本均为1 [root@hadoop ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka \ --create --topic topic_demo_001 --partitions 1 --replica
阅读全文
摘要:一、主题管理:创建主题 ### 方案一:创建主题 ~~~ # 创建主题 [root@hadoop ~]# kafka-topics.sh --zookeeper localhost:2181/myKafka --create --topic topic_x \ --partitions 3 --re
阅读全文
摘要:一、消费组管理:消费者组 (Consumer Group) ### 什么是消费者组 ~~~ consumer group是kafka提供的可扩展且具有容错性的消费者机制。 ### 三个特性: ~~~ 消费组有一个或多个消费者,消费者可以是一个进程,也可以是一个线程 ~~~ group.id是一个字符
阅读全文
摘要:一、主题管理参数说明:使用kafka-topics.sh脚本: 选项 说明 -config<String:name=value> 为创建的或修改的主题指定配置信息。支持下述配置条目:cleanup.policycompression.typedelete.retention.msfile.delet
阅读全文
摘要:一、消费者拦截器参数配置:消费者参数配置补充 配置项 说明 bootstrap.servers 建立到Kafka集群的初始连接用到的host/port列表。客户端会使用这里指定的所有的host/port来建立初始连接。这个配置仅会影响发现集群所有节点的初始连接。形式:host1:port1,host
阅读全文
摘要:一、消费者拦截器 ### 消费者拦截器 ~~~ 消费者在拉取了分区消息之后,要首先经过反序列化器对key和value进行反序列化处理。 ~~~ 处理完之后, ~~~ 如果消费端设置了拦截器,则需要经过拦截器的处理之后,才能返回给消费者应用程序进行处理。 ~~~ 如果拦截器是null,表示没有配置消费
阅读全文
摘要:一、创建一个maven项目:demo-09-kafka-consumerInterceptors ### 添加pom.xml依赖 <dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-cli
阅读全文
摘要:一、消费者位移管理 ### 消费者位移管理 ~~~ Kafka中,消费者根据消息的位移顺序消费消息。 ~~~ 消费者的位移由消费者管理可以存储于zookeeper中也可以存储于Kafka主题__consumer_offsets中。 ~~~ Kafka提供了消费者API,让消费者可以管理自己的位移。
阅读全文
摘要:一、消费者位移管理数据准备 ### 准备数据 ~~~ # 生成消息文件 [root@hadoop ~]# for i in `seq 60`; do echo "hello yanqi $i" >> nm.txt; done ~~~ # 创建主题,三个分区,每个分区一个副本 [root@hadoop
阅读全文
摘要:一、再均衡剖析 ### 再均衡 ~~~ # 重平衡可以说是kafka为人诟病最多的一个点了。 ~~~ 重平衡其实就是一个协议,它规定了如何让消费者组下的所有消费者来分配topic中的每一个分区。 ~~~ 比如一个topic有100个分区,一个消费者组内有20个消费者, ~~~ 在协调者的控制下让组内
阅读全文
摘要:一、位移提交 ### 位移提交 ~~~ Consumer需要向Kafka记录自己的位移数据,这个汇报过程称为提交位移(Committing Offsets) ~~~ Consumer 需要为分配给它的每个分区提交各自的位移数据 ~~~ 位移提交的由Consumer端负责的,Kafka只负责保管。__
阅读全文
摘要:一、反序列化剖析 ### 反序列化 ~~~ Kafka的broker中所有的消息都是字节数组,消费者获取到消息之后, ~~~ 需要先对消息进行反序列化处理,然后才能交给用户程序消费处理。 ### 消费者的反序列化器包括key的和value的反序列化器。 key.deserializer value.
阅读全文
摘要:一、自定义反序列化 ### 创建一个maven项目:demo-08-customDeserializer ~~~ # 添加pom.xml依赖 <dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kaf
阅读全文
摘要:一、[订阅剖析:订阅 ### 主题和分区 ~~~ # Topic,Kafka用于分类管理消息的逻辑单元,类似与MySQL的数据库。 ~~~ Partition,是Kafka下数据存储的基本单元,这个是物理上的概念。 ~~~ 同一个topic的数据,会被分散的存储到多个partition中, ~~~
阅读全文
摘要:一、消费者参数详解:消息接收:必要参数配置 参数 说明 bootstrap.servers 向Kafka集群建立初始连接用到的host/port列表。客户端会使用这里列出的所有服务器进行集群其他服务器的发现,而不管是否指定了哪个服务器用作引导。这个列表仅影响用来发现集群所有服务器的初始主机。字符串形
阅读全文
摘要:一、概念入门 ### [kafka高级特性解析] ~~~ [消费者/消费组] ~~~ [心跳机制] ### 消费者、消费组 ~~~ # 消费者从订阅的主题消费消息, ~~~ 消费消息的偏移量保存在Kafka的名字是__consumer_offsets 的主题中。 ~~~ 消费者还可以将自己的偏移量存
阅读全文
摘要:一、心跳机制 二、消费者宕机,退出消费组,触发再平衡,重新给消费组中的消费者分配分区。 ### 由于broker宕机,主题X的分区3宕机,此时分区3没有Leader副本,触发再平衡, ~~~ 消费者4没有对应的主题分区,则消费者4闲置。 ### Kafka 的心跳是 Kafka Consumer 和
阅读全文
摘要:一、生产者参数配置补充:参数设置方式: 二、补充参数: 参数名称 描述 retry.backoff.ms 在向一个指定的主题分区重发消息的时候,重试之间的等待时间。 比如3次重试,每次重试之后等待该时间长度,再接着重试。 在一些失败的场景,避免了密集循环的重新发送请求。 long型值,默认100。可
阅读全文
摘要:一、实现ProducerInterceptor接口 ### 消息实体类: package cn.yanqi.kafka.demo.entity; public class User { private Integer userId; private String username; public I
阅读全文
摘要:一、原理剖析 ### [kafka高级特性解析] ~~~ [生产者原理剖析] ~~~ [生产者参数配置] 二、原理剖析 ### 由上图可以看出:KafkaProducer有两个基本线程: ~~~ # 主线程: ~~~ 负责消息创建,拦截器,序列化器,分区器等操作,并将消息追加到消息收集器Recode
阅读全文