首页 > 其他分享 >kafka

kafka

时间:2022-09-23 18:34:08浏览次数:49  
标签:分区 partition Kafka 发送 kafka 数据

1.生产者发送流程

 

    外部数据发送到kafka集群,创建一个main线程,创建一个kafka producer对象发送,首先调用一个send方法,

把这批数据用send方法发送。数据到拦截器,可以对数据进行加工操作,拦截器是可选项。数据到序列化器,

java的序列化太重,kafka有自己的。数据到分区器,判断数据应该到哪一个分区,一个分区创建一个缓冲队列,是一个

双端队列RecordAccumulator,包含队列和内存池,队列里新增批次数据时,从内存池取出内存,发送到kafka集群时,把内存释放给内存池

都是在内存里完成的,总大小是32M,一批次大小是16k。达成条件被拉取,Sender线程把缓冲队列的数据读出来后发往kafka集群。

Sender线程怎么发送。他以(每个节点为key,后面跟上请求),如果给一个节点发送了5个请求都没有应答,就不发送了,

最多缓存5个请求。生产者发送过去数据,kafka集群有3种应答级别。如果返回成功,首先把该请求清空,然后把每个分区的

缓冲数据清理掉。如果返回失败,进行重试,重试次数默认int最大值,可以自定义,重试方法是重发请求

 

2.生产者发送消息的分区策略 2.1默认的分区器 DefaultPartitioner 1)指明partition的情况下,直接将指明的值作为partition值;例如partition=0,所有数据写入分区0 2)没有指明partition值但有key的情况下,将key的hash值与topic的partition数进行取余得到partition值; 例如:key1的hash值=5, key2的hash值=6 ,topic的partition数=2,那么key1 对应的value1写入1号分区, key2对应的value2写入0号分区。 3)既没有partition值又没有key值的情况下,Kafka采用Sticky Partition(黏性分区器),会随机选择一个分区,并尽可能一直 使用该分区,待该分区的batch已满或者已完成,Kafka再随机一个分区进行使用(和上一次的分区不同)。 例如:第一次随机选择0号分区,等0号分区当前批次满了(默认16k)或者linger.ms设置的时间到, Kafka再随机一个分区进 行使用(如果还是0会继续随机)。  2.2自定义分区器   3.生产者如何提高吞吐量 修改如下参数: • batch.size:批次大小,默认16k • linger.ms:等待时间,修改为5-100ms • compression.type:压缩snappy  • RecordAccumulator:缓冲区大小,修改为64m    4.ack 应答级别 可靠性总结: acks=0,生产者发送过来数据就不管了,可靠性差,效率高; acks=1,生产者发送过来数据Leader应答,可靠性中等,效率中等; acks=-1,生产者发送过来数据Leader和ISR队列里面所有Follwer应答,可靠性高,效率低; 在生产环境中,acks=0很少使用;acks=1,一般用于传输普通日志,允许丢个别数据;acks=-1,一般用于传输和钱相关的数据, 对可靠性要求比较高的场景。 数据完全可靠条件 = ACK级别设置为-1 + 分区副本大于等于2 + ISR里应答的最小副本数量大于等于2

 5.幂等性

幂等性就是指Producer不论向Broker发送多少次重复数据,Broker端都只会持久化一条,保证了不重复。 精确一次(Exactly Once) = 幂等性 + 至少一次( ack=-1 + 分区副本数>=2 + ISR最小副本数量>=2) 。   重复数据的判断标准:具有<PID, Partition, SeqNumber>相同主键的消息提交时,Broker只会持久化一条。其 中PID是Kafka每次重启都会分配一个新的;Partition 表示分区号;Sequence Number是单调自增的。 所以幂等性只能保证的是在单分区单会话内不重复。 2)如何使用幂等性 开启参数 enable.idempotence 默认为 true,false 关闭。   6.生产者事务 说明:开启事务,必须开启幂等性。 7.生产经验——数据乱序

 

 

 8.Zookeeper 存储的 Kafka 信息

 

 

 9.Kafka Broker 总体工作流程

 

 

 每个节点都有Controller,谁先注册,谁是Controller Leader。

 10.Leader 选举流程  

 

 11.Follower故障处理细节

 

12.Leader故障处理细节

 

 

 13.生产经验——手动调整分区副本存储

 14.生产经验——Leader Partition 负载平衡

15.生产经验——增加副本因子 16.Topic 数据的存储机制

 17.文件清理策略

  2)compact 日志压缩  

 

 18.高效读写数据

  4)页缓存 + 零拷贝技术

 

 19.Kafka 消费者工作流程

 

 消费者消费到什么地方由offset保存,offset保存在系统主题中

20.消费者组原理

 

 

 21.生产经验——分区的分配以及再平衡  

 

 所有topic的分区列出来,hashcode排序后轮询分配

 

 22.offset 的默认维护位置 

 

 

 offset就是记录消费者消费到哪了

 

 

 

 

 

 

 

 

 

 23.生产经验——数据积压(消费者如何提高吞吐量)

 

 

 

                                   

标签:分区,partition,Kafka,发送,kafka,数据
From: https://www.cnblogs.com/neona/p/16703074.html

相关文章

  • 一:kafka集群 基础、概念、安装了解
    官网下载:jdk-17_linux-x64_bin.tar.gz、apache-zookeeper-3.6.3-bin.tar.gz、kafka_2.13-3.1.0.tgz需知:ApacheKafka3.0.0正式发布:已弃用对Java8和Scala2.12的支......
  • Kafka Broker HA机制(高可用)
    名词解释要想说明白kafka的HA机制,我们必须先搞明白几个缩写名词,1、AR、ISR、OSRAR:AssignedReplicas,某分区的所有副本(这里所说的副本包括leader和follower)统称为AR。......
  • Kafka报错ERROR Shutdown broker because all log dirs
    Kafka报错ERRORShutdownbrokerbecausealllogdirsin...havefailed在使用Kafka时,删除了topic后出现问题:Kafka服务开始报错:ERRORShutdownbrokerbecauseall......
  • kafka之单节点多Broker部署及使用
    (1)单节点建立多Broker的集群多个server.properties文件表示多个Broker,一个server.properties文件对应一个Brokercpserver.propertiesserver-1.properties(复制一个......
  • Kafka单节点单broker部署及使用
    1.Kafka单节点单broker部署及使用(1)配置Kafka的config目录下的server.properties文件进入$KAFKA_HOME/config/serverpropertiesvim serverproperties主要......
  • Kafka概述
    1、Kafka概述:和消息系统类似(1)特性:1)发布和订阅 2)实时处理数据流 3)分布式存储(2)功能:构建实时数据管道和实时数据流处理,横向扩展(通过增加机器的方式......
  • 【转】Windows安装运行Kafka
    在Windows安装运行Kafka原文地址:https://www.cnblogs.com/flower1990/p/7466882.html一、安装JAVAJDK1、下载安装包http://www.oracle.com/technetwork/java/javase......
  • springboot+Flink(读取kafka并存入Mysql)20220921
    1、mysql数据库test 2、kafka创建主题student  3、pom.xml<properties><java.version>1.8</java.version><project.build.sourceEncod......
  • 如何确保kafka topic已经删除
    问题描述TopicExistsException:Topic'xxx'ismarkedfordeletion.在写kafka工具时,有两个方法:批量创建topic和批量删除topic。运维操作一般是,批量删除一堆topic,然......
  • 5种kafka消费端性能优化方法
    摘要:带你了解基于FusionInsightHD&MRS的5种kafka消费端性能优化方法。本文分享自华为云社区《FusionInsightHD&MRSkafka消费端性能优化方法》,作者:穿夹克的坏猴子。kaf......