分区(partion)

kafka中的topic可以细分为不同的partion,一个topic可以将消息存放在不同的partion中。

leader和follower

每个partion可以设置一个leader和多个follower。kafka的消息没有设置读写分离,每个消息发送时,都是发送至对应的partion的leader-paertion,follower-partion主要是为了备份数据而存在,当leader-partion出现故障时,数据已经完全同步的follower-partion也会切换成leader-partion。

AR和ISR

AR:分区中所有的副本统称为AR。
ISR:所有与leader节点保持同步的副本(包括leader节点)组成的节点,生产者首先将消息发送给leader副本,然后follower从leader中同步消息。
ISR是AR的子集。

数据的存储

在partion中,一个topic中的数据存放在不同的partion中,一个分区的内容会存储成一个log文件,为了防止log过大,引入了日志分段,根据一定规则将log切分为多个logSegment,相当于一个巨型文件被切分成了很多不同的文件。log和logSegment关系如下:

Log在物理上只以文件夹的形式存储,日志文件在磁盘的存储如下:

消费者(consumer)

分组(group)

消费者从partion中消费数据,consumer有group的概念,每个group可以消费完整的一份topic中的数据。

消费者分区分配

RangeAssignor 分配策略(kafka默认的分区策略)

kafka中,consumer消费数据时,consumer消费partion中的数据和consumer与partion的相对数量有关。

  1. partion大于consumer
    当partion大于consumer时,一个consumer可能同时消费多个partion中的数据
  2. partion小于consumer
    当partion小于consumer时,每个consumer会去消费一个partion中的数据。多出来的consumer则是处于空闲状态
  3. partion等于consume
    当partion的数量等于consumer时,每个consumer消费一个partion中的数据。

除了这种分区分配策略之外,还有RoundRobinAssignor以及StickyAssignor分区分配策略,当然,也可以自定义分区分配策略。

kafka的分区(partion)和消费者(consumer)相关推荐

  1. Kafka学习-----Kafka消费者Consumer:消费方式,分区分配策略,RangeRoundRobin

    目录 一.消费方式 二.消费者的分配模式 1.分配时机? 2.Range策略 2.RoundRobin 策略 三.代码解释 RangeAssignor: RoundRobinAssignor 一.消费 ...

  2. kafka中生产者是如何把消息投递到哪个分区的?消费者又是怎么选择分区的?...

    作者 | 废物大师兄 来源 | https://www.cnblogs.com/cjsblog/p/9664536.html 1. 前言 我们知道,生产者发送消息到主题,消费者订阅主题(以消费者组的名 ...

  3. Kafka学习(十)--Kafka消费者Consumer消费消息配置实战

    一. Kafka消费者Consumer消费消息配置实战 配置: public static Properties getProperties() {Properties props = new Pro ...

  4. Kafka学习整理七(producer和consumer编程实践)

    实践代码采用kafka-clients V0.10.0.0 编写 一.编写producer 第一步:使用./kafka-topics.sh 命令创建topic及partitions 分区数 ./kaf ...

  5. 如何创建Kafka客户端:Avro Producer和Consumer Client

    1.目标 - Kafka客户端 在本文的Kafka客户端中,我们将学习如何使用Kafka API 创建Apache Kafka客户端.有几种方法可以创建Kafka客户端,例如最多一次,至少一次,以及一 ...

  6. kafka的分区策略(partition assignment strategy)

    概述 kafka的分区策略指的是producer端的 各个partition中的数据如何安排给consumer消费. Range(按范围) ange策略是对每个主题而言的,首先对同一个主题里面的分区按 ...

  7. jmeter线程数并发数区别_如何确定Kafka的分区数、key和consumer线程数、以及不消费问题解决...

    在Kafak中国社区的qq群中,这个问题被提及的比例是相当高的,这也是Kafka用户最常碰到的问题之一.本文结合Kafka源码试图对该问题相关的因素进行探讨.希望对大家有所帮助. 怎么确定分区数? & ...

  8. kafka 主动消费_Kafka消费组(consumer group)

    在开始之前,我想花一点时间先来明确一些概念和术语,这会极大地方便我们下面的讨论.另外请原谅这文章有点长,毕竟要讨论的东西很多,虽然已然删除了很多太过细节的东西. 一. 误区澄清与概念明确 1 Kafk ...

  9. 使用redis kv数据库维护kafka主题分区的offset

    目的 将kafka的offset保存到外部的redis数据库中,再次读取的时候也从外部的redis数据库读取 主要步骤 1 从kafka获取要读取的消息的开始offset 2 通过offset读取数据 ...

  10. kafka 修改分区_kafka的分区数设置

    越多的分区可以提供更高的吞吐量 首先我们需要明白以下事实:在kafka中,单个patition是kafka并行操作的最小单元.在producer和broker端,向每一个分区写入数据是可以完全并行化的 ...

最新文章

  1. FMDB使用Cached Statement功能
  2. java读取 500M 以上文件,java读取大文件
  3. SDN控制器策略制定和表项下发—Vecloud
  4. 天的各种书法_寒假书法集训|小考拉硬笔书法班招募中
  5. Winforn中设置ZedGraph多条Y轴时曲线刻度不均匀问题解决
  6. 无边框处理_PPT别再直接插图片,简单处理一下,瞬间提升你的PPT颜值
  7. [前端随笔][css] 弹性布局
  8. 基于SpringMVC进行REST服务开发
  9. java 解压到内存,Java GZip 基于内存实现压缩和解压的方法
  10. SQL执行效率提升几万倍的操作详解!
  11. 微软笔试题 《Image Encryption》
  12. 汇编心得(一)在32位机上实现64位数的相加
  13. 快手内容运营-数据分析面试
  14. Mac 下安装pip,卸载pip方法
  15. 英语诗歌选读 | 期末总结
  16. 从时间上算,我和李笑来是同一批人 | 十年币圈生存实录
  17. word文档分栏怎么设置
  18. Android学习笔记--Notification(通知)
  19. java 设置纸张大小设置_Java读取打印机自定义纸张.
  20. python和c++同时订阅两个话题,在一个回调函数中处理

热门文章

  1. 神经网络训练 policy gradient 算法时 梯度消失问题
  2. Input实现多个文件上传以及文件夹上传
  3. 云服务器和本地服务器的区别在哪?这些区别令人心动
  4. sonarlint 使用教程
  5. 在Win7上用VMWare搭建iOS/iPad开发环境
  6. JavaScript栈内存和堆内存区别
  7. 前端Vue请求后端Django遇到127.0.0.1拒绝访问
  8. win7三国杀源码编译
  9. db2数据库linux上重新安装,Linux下DB2 8.1重装的问题
  10. 一个简单的网站设计与实现(HTML+CSS)---钻戒官网(5页浮动布局)