Kafka学习

  • Kafka的消息通过主题(topic)进行分类

  • 主题可以被分为若干个分区(partition),一个分区就是一个提交日志,通过分区来实现数据冗余和伸缩性

  • 消息以追加的方式写入分区,然后以先入先出(FIFO)的顺序读取

  • 无法在整个主题范围内保证消息的顺序,可以保证消息在单个分区内的顺序

  • 生产者(发布者,写入者)创建消息

  • 一般情况下,一个消息会被发布到一个特定的主题上,生产者在默认情况下把消息均衡发不到主题的所有分区上,并不关心特定消息会被写入哪个分区。

  • 特殊情况下,生产者会把消息直接写到指定的分区,通过分区器来实现,分区器为键生成一个散列值,并将其映射到指定分区上,从而保证同一个键的消息会被写到同一个分区上

  • 消费者(订阅者,读者)读取消息

  • 消费者订阅一个或多个主题,并按照消息生成的顺序进行读取

  • 消费者通过检查消息的偏移量来区分已经读取过的消息

  • 偏移量是一个不断递增的整数值,在创建消息时,kafka会把它添加到消息里

  • 同一个分区,每个消息的偏移量都是唯一的

  • 消费者把每个分区最后读取的消息偏移量保存在Zookeeper或Kafka上,如果消费者关闭或重启,读取状态不会丢失

  • 一个或多个消费者共同读取一个主题,群组保证每个分区只能被一个消费者使用

  • 一个独立的Kafka服务器被称为broker

  • broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存

主要硬件指标

  • 磁盘吞吐量:磁盘写入速度越快,生成消息的延迟就越低,优先选择固态硬盘(SSD)

  • 磁盘容量:需要多大的磁盘容量取决于需要保留的消息数量。如果每天收到1TB的消息,并且保留7天,那就需要7TB的存储空间,还有其他文件至少10%,还要考虑流量增长和波动

  • 内存:一些情况下,消费者读取的消息会直接存放在系统的页面缓存里,这比从磁盘上重新读取要快得多

  • 网络吞吐量:决定了Kafka能够处理的最大数据流量

  • 保留消息是Kafka的一个重要特性

  • 保留策略:天数或者消息大小

  • broker会往拥有最少数目分区的路径新增分区,而不是往拥有最小磁盘空间的路径新增分区

相关推荐
青山是哪个青山3 小时前
LangChain 学习笔记(四):Message 与提示词模板
笔记·学习·langchain
hsjiasb5 小时前
FreeRTOS学习(二十六)——动态内存管理heap_1到heap_5
stm32·单片机·学习·学习笔记·freertos
崇子嵘5 小时前
基于zynqMP15eg的linux驱动学习
学习
知识分享小能手7 小时前
线性代数学习教程,从入门到精通,向量组的线性相关性 — 完整知识点梳理(7)
学习·线性代数·机器学习
Shell运维手记7 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
动词ing8 小时前
【学习笔记】C语言(数组指针与指针数组+字符数组+函数+参数传递+字符串作为形参+递归函数+指针函数+回调函数+结构体嵌套+内存动态分配函数)
c语言·笔记·学习
小O的算法实验室10 小时前
IEEE TII,学习为多目标深度学习生成偏好
人工智能·深度学习·学习
城管不管10 小时前
重生——第九次面试2026.8.13某车一面
分布式·ai·面试·职场和发展·rabbitmq
apgk110 小时前
基于Canal实现mysql数据同步到消息队列(RabbitMQ/Kafka)详细操作教程
docker·kafka·rabbitmq
吃好睡好便好11 小时前
说说高温对情绪的影响
学习·生活·情绪·高温