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文件

相关推荐
腾讯云中间件1 小时前
TDMQ CKafka 版客户端实战指南系列之二:消费消息最佳实践
kafka·消息队列
腾讯云中间件1 小时前
TDMQ CKafka 版客户端实战指南系列之一:生产最佳实践
kafka·消息队列·腾讯
涛哥开发笔记1 天前
Kakfa核心概念和架构
kafka
深圳蔓延科技2 天前
Kafka的高性能之路
后端·kafka
阿里云云原生3 天前
嘉银科技基于阿里云 Kafka Serverless 提升业务弹性能力,节省成本超过 20%
kafka·serverless
程序消消乐3 天前
Kafka 入门指南:从 0 到 1 构建你的 Kafka 知识基础入门体系
分布式·kafka
智能化咨询3 天前
Kafka架构:构建高吞吐量分布式消息系统的艺术——进阶优化与行业实践
分布式·架构·kafka
Chasing__Dreams3 天前
kafka--基础知识点--5.2--最多一次、至少一次、精确一次
分布式·kafka
RestCloud4 天前
Kafka实时数据管道:ETL在流式处理中的应用
数据库·kafka·api