Kafka·概述

概览

Producer

生产者发送消息给broker,并不是生成一条消息后立刻发送,而是积攒多条后,批量发送到broker。可以通过配置参数batch.size(单位字节)调整积攒多少后发送

Consumer

Topic

消息的分类

当Producer发送指定topic的消息时,若在server端不存在该topic,可通过配置参数auto.create.topics.enable(默认true,在生产中不建议开启)决定是否自动创建

  • Partition(分区)

    为了降低topic在单个broker上的压力,创建topic时可以为该topic指定分区数量,将该topic的分区分布到不同的broker上,这样当producer发送指定topic的消息时,可以将这些消息分布存储到该topic的分区所在的broker上

    当多个消费者监听同一个topic的消息时,属于同一个消费者组的消费者可以分别消费不同的分区中的消息,如有三个分区,三个消费者,则每个消费者各消费一个分区中的消息

  • 副本

    为了支持高可用,即使集群某台broker宕机,也能正常提供服务,为每个分区创建多个副本,如下topicA指定了三个分区和两个副本

    • leaderfollower
      同一个分区的多个副本中会选出一个作为leader,其他作为follower,客户端(Producer和Consumer)只和leader交互。
      follower从leader同步数据,leader宕机后会从其他follower中选举出一个成为新的leader
    • controller

Cosumer Group

生产者生产的消息越来越多,若单个消费者的消费能力不够,则消息会在server端产生堆积,为了提高消费能力,可增加多个消费者,每个消费者至少消费一个分区中的数据,为了避免分区的数据被重复消费,可将这些消费者划分为一个组(设置group.id)

同一个消费者组中的消费者会分配不同的分区去消费,不存在一个以上的消费者消费同一个分区的情况

如果消费者数量大于分区数量,则多余的消费者不消费数据

offset

消费者组在单个分区上消费消息的偏移量

存储机制

分区在broker上的存储形式


.index文件:索引文件
.log文件:存放数据的文件
.timeindex文件:存放时间索引的问题

segment

随着消息的不断增加,存储的文件越来越大,检索效率会越来越低。当文件增大到指定log.segment.bytes大小后,将会创建新的文件用于存储新的数据内容,每个segment都会对应一套.log .index .timeindex文件

相关推荐
找不到、了9 天前
kafka消费的模式及消息积压处理方案
java·kafka
超级小忍9 天前
Spring Boot 集成 Apache Kafka 实战指南
spring boot·kafka·apache
小韩加油呀10 天前
logstash读取kafka日志写到oss归档存储180天
kafka·logstash
小白上线*^_^*10 天前
Kafka与Zookeeper在linux上的下载记录
zookeeper·kafka·linux上的下载与安装
Edingbrugh.南空10 天前
Kafka Streams架构深度解析:从并行处理到容错机制的全链路实践
架构·kafka
茫茫人海一粒沙10 天前
Kafka 原理与核心机制全解析
kafka
计算机毕设定制辅导-无忧学长10 天前
Kafka 源码剖析:消息存储与协议实现(一)
分布式·kafka
Edingbrugh.南空10 天前
Kafka性能调优全攻略:从JVM参数到系统优化
jvm·分布式·kafka
过期动态11 天前
MySQL中的常见运算符
java·数据库·spring boot·mysql·spring cloud·kafka·tomcat
Edingbrugh.南空11 天前
Flink Connector Kafka深度剖析与进阶实践指南
大数据·flink·kafka