ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Kafka 笔记

2021-10-28 23:32:34  阅读:185  来源: 互联网

标签:Partition 笔记 Kafka Topic 消息 kafka Consumer


一、什么是kafka?

  Kafka最初由Linkedin 公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper 协调的分布式日志系统,也可以作为MQ消息系统。Linkedin 公司在2010 年贡献给了Apache基金会并成为了顶级开源项目。

  简单一句话,是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。

二、Kafka名词解释

1、Broker
  Kafka集群中包含的服务器,有一个或多个服务器,这种服务器被称为 Broker。

Broker 端不维护数据的消费状态,提升了性能。直接使用磁盘进行存储,线性读写,速度快。避免了在JVM 内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。

2、Producer
  负责发布消息到Kafka Broker

3、Consumer
  负责从Broker 拉取(pull)数据并进行处理。

4、Topic
  每条发布到kafka集群的消息都有一个类别,这个类别被称为Topic。

物理上不同Topic的消息分开存储,逻辑上一个Topic 的消息虽然保存于一个或多个Broker上但是用户只需指定消费的Topic,即刻就可以生产或消费数据而不必关心数据存于何处。

5、Partition
  Partition 是物理上的概念,每个Topic 包含一个或多个Partition。kafka分配的单位是Partition

6、Consumer Group
  每个 Consumer 属于一个特定的 Consumer Group

可为每个 Consumer 指定Group name,若不指定 Group name 则属于默认的 Group

每条消息只可以被 Consumer Goup 组中的一个Consumer消费,但是可以指定多个 Consumer Group

所以一个消息在 Consumer Group 里面只可以被消费一次。已确定!

7、Topic & Partition
  Topic 在逻辑上可以被认为是一个 queue,每发送一条消息必须指定它的Topic,可以简单理解为必须指明把这条消息放入到哪个queue里。

为了使得kafka 的吞吐率可以线性提高,物理上把Topic 分成一个或多个Partition,每个Partition 在物理上对应一个文件夹,该文件夹下存储这个Partition 的所有消息和索引文件。

若创建 Topic1 和Topic2 两个Topic,且分别有13个和19个分区,则整个集群上相应会生成共32个文件夹

三、kafka分布式消息原理

  在Kafka中,Topic 是一个存储消息的逻辑概念,可以认为是一个消息集合。每条消息发送到 Kafka 集群的消息都有一个类别。物理上来锁,不同的topic的消息是分开存储的。

每个Topic 可以有多个生产者向它发送消息,也可以有多个消费者去消费其中的消息。

 

 

  每个Topic 又可以划分为多个分区(每个Topic至少有一个分区),同一topic 不同分区包含的消息是不同的。每个消息在被添加到分区时,都会被分配一个 offset (偏移量),它是消息在此分区中的唯一编号,kafka 通过offset 保证消息在分区内的顺序,offset 的顺序不跨分区,即kafka 只保证同一个分区内的消息是有序的。

 

标签:Partition,笔记,Kafka,Topic,消息,kafka,Consumer
来源: https://www.cnblogs.com/weill/p/15465349.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有