17.Kafka自定义拦截器

[TOC]一、拦截器原理​ Producer 拦截器(interceptor)是在 Kafka 0.10 版本被引入的,主要用于实现clients端的定制化控制逻辑。​ 对于 producer 而言,interceptor 使得用户在消息发送前以及 producer 回调逻辑前有机会对消息做一些定制化需求,比如修改消息等。同时,producer 允许用户指定多个 interceptor 按序作用于同一条消息从而形成一个拦截链(interceptor chain)。二、拦截器实现Intercetpor 的实现接口是 org.apache.kafka.client...

大数据 2021-10-16 PM 1224℃ 0条

16.Kafka消费者API

[TOC]前言Consumer 消费数据时的可靠性是很容易保证的,因为数据在 Kafka 中是持久化的,故不用担心数据丢失问题。由于consumer在消费过程中可能会出现断电宕机等故障,consumer恢复后,需要从故障前的位置的继续消费,所以consumer需要实时记录自己消费到了哪个offset,以便故障恢复后继续消费。所以 offset 的维护是 Consumer 消费数据是必须考虑的问题。如果想了解更多Offset详情信息可参考文章:12.Kafka之offset介绍本次使用的Kafka版本是2.8.0导入依赖<dependency> <groupId&...

大数据 2021-10-15 PM 863℃ 0条

15.Kafka生产者API

[TOC]前言本次运行的Kafka版本是2.8.0单机版;在运行之前先要检查防火墙是否关闭,或者是否开启9092端口查看防火墙状态命令firewall-cmd --state关闭防火墙命令systemctl stop firewalld.servicePS:别问我为什么要强调这一点。一、消息发送流程Kafka 的 Producer 发送消息采用的是异步发送的方式。在消息发送的过程中,涉及到了两个线程——main线程和 Sender线程,以及一个线程共享变量——RecordAccumulator。main 线程将消息发送给 RecordAccumulator,Sender 线程不断从 Re...

大数据 2021-10-14 AM 1422℃ 2条

14.【转载】Kafka事务特性详解

[TOC]前言Kafka在0.11版本中除了引入了Exactly Once语义,还引入了事务特性。Kafka事务特性是指一系列的生产者生产消息和消费者提交偏移量的操作在一个事务中,或者说是一个原子操作,生产消息和提交偏移量同时成功或者失败。一、Kafka事务的使用Kafka中的事务特性主要用于以下两种场景:生产者发送多条消息可以封装在一个事务中,形成一个原子操作。多条消息要么都发送成功,要么都发送失败。read-process-write模式:将消息消费和生产封装在一个事务中,形成一个原子操作。在一个流式处理的应用中,常常一个服务需要从上游接收消息,然后经过处理后送达到下游,这就对应着消...

大数据 2021-09-29 AM 1293℃ 0条

13.Zookeeper在Kafka中的作用

[TOC]前言本篇针对的是2.8版本之前的Kafka,2.8版本及之后Kafka已经移除了对Zookeeper的依赖,通过KRaft进行自己的集群管理,不过目前只是测试阶段。一、概述Apache Kafka是一个使用Zookeeper构建的分布式系统。Zookeeper的主要作用是在集群中的不同节点之间建立协调;如果任何节点失败,我们还使用Zookeeper从先前提交的偏移量中恢复,因为它做周期性提交偏移量工作。partition的leader选举过程:说明从Zookeeper中读取当前分区的所有ISR(in-sync replicas)集合调用配置的分区选择算法选择分区的leader二...

大数据 2021-09-28 PM 2728℃ 0条

12.Kafka之offset介绍

[TOC]一、概述1.1 概念消费者消费完了消息是不会被立刻删除的,每个消费者把消费的数据消费到哪里了就需要做个记录,就是offset。1.2 版本Kafka 0.9版本之前,consumer默认将offset保存在Zookeeper中,从0.9版本开始,consumer默认将offset保存在Kafka一个内置的topic中,该topic为"__consumer_offsets" 。__consumer_offsets说明:这个topic下的消息格式为k-v结构,k-v分别代表消息的键值和消息体。 k-(Group ID,主题名,分区号) v-(位移值,ts,metadata)__co...

大数据 2021-09-27 PM 2351℃ 0条

11. Kafka消费者分区分配策略

[TOC]前言在本节开始之前,可以先了解一下上一节内容Kafka重平衡机制。一、消费者分区分配策略作用一个consumer group 中有多个consumer,一个 topic 有多个partition,所以必然会涉及到partition 的分配问题,即确定哪个partition 由哪个consumer 来消费。 Kafka 有三种分配策略:RoundRobin(轮询)Range(范围)StickyAssignor同时Kafka也支持自定义分配策略。二、分区分配策略详解2.1 RangeAssignor(默认分配策略)概述范围分区策略:对每个Topic进行独立的分区分配。对于每一个To...

大数据 2021-09-26 PM 1921℃ 0条

10.【转载】Kafka重平衡机制

[TOC]前言当集群中有新成员加入,或者某些主题增加了分区之后,消费者是怎么进行重新分配消费的?这里就涉及到重平衡(Rebalance)的概念,下面我就给大家讲解一下什么是 Kafka 重平衡机制,我尽量做到图文并茂通俗易懂。一、重平衡的作用重平衡跟消费组紧密相关,它保证了消费组成员分配分区可以做到公平分配,也是消费组模型的实现,消费组模型如下:从图中可以找到消费组模型的几个概念:同一个消费组,一个分区只能被一个消费者订阅消费,但一个消费者可订阅多个分区,也即是每条消息只会被同一个消费组的某一个消费者消费,确保不会被重复消费;一个分区可被不同消费组订阅,这里有种特殊情况,加入每个消费组只...

大数据 2021-09-25 PM 1245℃ 0条

09.Kafka消费过程分析

[TOC]一、消费者模型1.1 概念消息由生产者发布到Kafka集群后,会被消费者消费。消息的消费模型有两种:推送模型(Push)拉取模型(Pull)。1.2 推送模型(push)基于推送模型(push)的消息系统,有消息代理记录消费者的消费状态。消息代理在将消息推送到消费者后,标记这条消息已经消费,但这种方式无法很好地保证消费被处理。如果要保证消息被处理,消息代理发送完消息后,要设置状态为“已发送”,只要收到消费者的确认请求后才更新为“已消费”,这就需要代理中记录所有的消费状态,但显然这种方式不可取。缺点push模式很难适应消费速率不同的消费者因为消息发送速率是由broker决定的,p...

大数据 2021-09-24 PM 1551℃ 0条

08.Kafka生产者数据可靠性保证

[TOC]一、数据可靠性保证为保证 producer 发送的数据,能可靠的发送到指定的 topic,topic 的每个 partition 收到 producer 发送的数据后,都需要向producer发送 ack(acknowledgement 确认收到),如果 producer 收到 ack,就会进行下一轮的发送,否则重新发送数据。1.1 副本数据同步策略方案优点缺点半数以上完成同步,就发 送 ack延迟低选举新的 leader 时,容忍 n 台 节点的故障,需要 2n+1 个副本全部完成同步,才发送 ack选举新的leader 时,容忍n台节点的故障,需要n+1个副本延迟高Kafk...

大数据 2021-09-23 AM 923℃ 0条