Kafka知识总结(基本介绍+基本概念)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

消息队列应用场景:

通过异步处理提高系统性能(减少响应所需时间)

削峰/限流

降低系统耦合性

消息队列对比

Kafka:

  • 追求高吞吐量,一开始用于日志收集和传输,适合产生大量数据的互联网服务的数据收集业务,大型公司可以选用。
  • 如果有日志采集功能,肯定首选 Kafka。

RocketMQ:

  • 天生为金融互联网领域而生,对于可靠性要求很高的场景。
    • 尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况。
  • RoketMQ 在稳定性上可能更值得信赖。
    • 这些业务场景在阿里双 11 已经经历了多次考验,如果业务有上述并发场景,建议选择 RocketMQ。

RabbitMQ:

  • 结合 Erlang 语言本身的并发优势,性能较好,社区活跃度也比较高,但是不利于做二次开发和维护。
  • 不过 RabbitMQ 的社区十分活跃,可以解决开发过程中遇到的 Bug。
  • 如果数据量没有那么大,小公司优先选择功能比较完备的 RabbitMQ。

基础知识

版本号

版本命名:Scala 2.11 - kafka_2.11-2.1.1

前面的版本号是编译 Kafka 源代码的 Scala 编译器版本。Kafka 服务器端的代码完全由 Scala 语言编写,Scala 同时支持面向对象编程和函数式编程。

真正的 Kafka 版本号实际上是 2.1.1。

前面的 2 表示大版本号,即 Major Version;中间的 1 表示小版本号或次版本号,即 Minor Version;最后的 1 表示修订版本号,也就是 Patch 号。

为什么吞吐量大、速度快?

顺序读写:

Kafka的message是不断追加到本地磁盘文件末尾的,而不是随机的写入。

Page Cache:

通过操作系统的Page Cache,Kafka的读写操作基本上是基于内存的,读写速度得到了极大的提升。

零拷贝,批量读写,批量压缩。

分区分段+索引:

Kafka的message是按topic分类存储的,topic中的数据又是按照一个一个的partition即分区存储到不同broker节点。

每个partition对应了操作系统上的一个文件夹,partition实际上又是按照segment分段存储的。

Kafka又默认为分段后的数据文件建立了索引文件,就是文件系统上的.index文件。

基本概念

主题:

  • Topic主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。

分区:

  • Partition,一个有序不变的消息序列,每个主题下可以有多个分区。

消息位移:

  • Offset,表示分区中每条消息的位置信息,是一个单调递增切不变的值。

副本:

  • Replica,进行数据冗余。

生产者:

  • Producer,向主题发送新消息的应用程序。

消费者:

  • Consumer,从主题订阅新消息的应用程序。

消费者位移:

  • Consumer Offset,表征消费者消费进度。

消费者组:

  • Consumer Group,多个消费者实例共同组成的一个组,同时消费多个分区以实现高吞吐量。

HW

HW (High Watermark)俗称高水位,它标识了一个特定的消息偏移量(offset),消费者只能拉取到这个offset之前的消息。

LEO

LEO (Log End Offset),标识当前日志文件中下一条待写入的消息的offset。

上图中offset为9的位置即为当前日志文件的 LEO,LEO 的大小相当于当前日志分区中最后一条消息的offset值加1。

分区 ISR 集合中的每个副本都会维护自身的 LEO,而 ISR 集合中最小的 LEO 即为分区的 HW,对消费者而言只能消费 HW 之前的消息。

消息模型

相关推荐
無a伟1 小时前
RabbitMq高级特性:TTL,死信队列,延迟队列
java·分布式·rabbitmq
stark张宇1 小时前
从 Paxos 到 Raft:一文讲透分布式一致性与复制状态机
分布式·后端
小楼昨夜又东风1261 小时前
kafka、rocketmq、rabbitmq,有什么区别
kafka·rabbitmq·rocketmq
kaoa0003 小时前
Linux入门攻坚——89、Hadoop-1-架构及概念
大数据·linux·hadoop·分布式
海宇大数据3 小时前
分布式网格实战:基于海宇柠檬查出险-登记证构建自动化车辆合规网关
运维·人工智能·分布式·自动化
無a伟4 小时前
RabbitMq高级特性:消息确认,持久化,重试机制
java·分布式·rabbitmq
HanhahnaH5 小时前
Spark 任务如何实现幂等?
大数据·分布式·spark
江畔柳前堤1 天前
云原生 × AI 全景图谱:从 Kubernetes 到 Agent 基础设施的一次认知跃迁
人工智能·分布式·gpt·云原生·kubernetes·原型模式·agi
Thomas21431 天前
kafka 存储flink changelog两种方式和形态
分布式·flink·kafka
GIR1231 天前
首发:2026年分布式储能系统市场分析报告——覆盖发展前景、占有率与十五五规划
分布式