当前位置: 首页 > article >正文

Kafka基础概念

1.kafka概念

Producer:生产消息实例

Broker:管理和存储消息服务端服务器

Consumer:消费消息的实例

Record:kafka系统中的消息

2.kafka概念-主题

topic:主题,消息的类别

主要用于区别一个broker(服务器)中的不同消息的类别,方便于Consumer去订阅不同的主题,消费对应主题的消息

3.kafka概念-消费者和分区

当生产者生产消息数量过多,单机消费者无法满足消费需求,但是消费多机部署会产生重复消费消息。

原因:每个consumer无法区分消费了哪些消息。

解决方案:将topic做更细粒度的划分,叫做Partition,让每个partition只让一个消费者消费,那么就不会造成多个消费者消费同一条消息的情况了。

Partition:实际消息存储的地方,有序的队列。

Offset:偏移量,Record在Patition中的位置。

ConsumerGroup:共同处理消息的一组消费者实例。

但是在Partition之后,还是会造成消息重复消费的问题:

kafka重复消费消息的原因:已经消费了数据,但是offset并没有提交

kafka消息重复消费很大一部分原因是在于发生了再均衡

1)消费者宕机,重启等,导致消息已经消费,但是没有提交offset,那么offset就还是消息消费之前的offset,下一次消费者来消费,就会消费上次已经消费的消息。

2)消费者使用自动提交offset,但当还没有提交的时候,有新的消费者加入或移除,发生了rebalance。再次消费的时候,消费者会根据提交的偏移量来,于是重复消费了消息。

3)消息处理耗时,或者消费者拉取的消息量太多,处理耗时,超过了max.poll.interval.ms的配置时间,导致认为当前消费者已经死掉,触发了rebalance。

Rebalance:Broker为Consumer重新分配Partition的一个过程。

4.kafka概念-位点

场景:随着时间的增加,消息占用了很多磁盘空间。

解决方案:消息总量达到了设置大小,或者设置时间,就删除这些消息。

在Partition中有三个概念:

earlistOffset:第一条有效的消息的Offset,也就是消费者开始消费这个Partition时的第一条消息

GroupOffset:ConsumerGroup中的对应的消费者所消费到的Offset。

latestOffset:最后一条数据的Offset

5.kafka概念-Replication&Cluster

场景:机器故障,该机器上的消息丢失

解决方案:部署多台Broker,消息根据partition在不同机器之间进行备份

集群:一组broker组成集群

Replication:消息的备份

6.kafka拓扑模型


http://www.kler.cn/news/311950.html

相关文章:

  • Vivado FIR IP 详解 (一)
  • yolo车位数据集
  • MATLAB 图像处理入门详解
  • 油烟机制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
  • 2.计算机网络基础
  • C# 比较对象新思路,利用反射技术打造更灵活的比较工具
  • 基于 jenkins 的持续集成、持续部署方案
  • 自然语言处理入门:从基础概念到实战项目
  • 计算机毕业设计 教师科研信息管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • Redis性能测试redis-benchmark
  • ORACLE SAVEPOINT保存点
  • Vue 中常用的基础指令
  • 一、编译原理(引论)
  • 【Python技术】使用akshare、scikit-learn预测股票涨跌简单例子
  • web基础—dvwa靶场(九)Weak Session IDs
  • 组题能力研判:基于教师上传试卷的深度分析
  • AI应用的时代:从大模型到个性化创新
  • 【Python】练习:控制语句(二)第2关
  • 深入理解ElasticSearch集群:架构、高可用性与数据一致性
  • IMS 呼叫流程(详细)
  • 软件工程专业未来发展方向
  • 【掌桥科研-注册安全分析报告-无验证方式导致安全隐患】
  • 【计算机网络】数据链路层深度解析
  • IDEA Cody 插件实现原理
  • 古诗词四首鉴赏
  • jQuery 简介 ③ ready()事件函数、jQuery 二个原则及容错机制
  • 前后端独立部署的企业级私有化文档管理系统丨无忧·企业文档
  • keil调试变量值被篡改问题
  • c#语言写一个数组排序函数
  • mysql ERROR 1292 (22007): Truncated incorrect DOUBLE value 问题