查看“Kafka 中主题和分区的概念”的源代码
←
Kafka 中主题和分区的概念
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
=== 1.主题 topic === 主题 topic 在 Kafka 中是一个逻辑的概念,Kafka 通过 topic 将消息进行分类。不同的 topic 会被订阅该 topic 的消费者消费。 但是有一个问题,如果说这个 topic 中的消息非常非常多,多到需要几T来存,因为消息是会被保存到 log 日志文件中的。为了解决这个文件过大的问题,Kafka 提出了 Partition 分区的概念。 ===2.分区 Partition=== ==== 1)分区的概念 ==== 通过 partition 将一个 topic 中的消息分区来存储。这样的好处有多个: *分区存储,可以解决统一存储文件过大的问题 *提高了读写的吞吐量:读和写可以同时在多个分区中进行 [[文件:分区.png|无|缩略图|400x400像素]] ==== 2)创建多分区的主题==== <syntaxhighlight lang="shell-session"> [root@localhost ~]# /usr/local/kafka/kafka_2.11-2.4.0/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic test1 Created topic test1. [root@localhost ~]# </syntaxhighlight> ===3.Kafka 中消息日志文件中保存的内容=== *00000000000000000000.log:这个文件中保存的就是消息 *__consumer_offsets-49: Kafka 内部自己创建了 __consumer_offsets 主题包含了50个分区。这个主题用来存放消费者消费某个主题的偏移量。 因为每个消费者都会自己维护着消费的主题的偏移量,也就是说每个消费者会把消费的主题的偏移量自主上报给 Kafka 中的默认主题:__consumer_offsets。 因此 Kafka 为了提升这个主题的并发性,默认设置了50个分区。 <blockquote>提交到哪个分区:通过 hash 函数:hash(consumerGroupId)%__consumer_offsets 主题的分区数</blockquote> <blockquote>提交到该主题中的内容是:key 是 consumerGroupId+topic+分区号,value 就是 offset 的值</blockquote> * 文件中保存的消息,默认保存7天。7天到后消息会被删除。
返回至
Kafka 中主题和分区的概念
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息