kafka中的topic、partition和offset

2019-04-02  本文已影响0人  我也有键盘

一、简介


1. 什么是kafka

Kafka 是一款分布式消息发布和订阅系统,具有高性能、高吞吐量的特点而被广泛应用与大数据传输场景。它由 LinkedIn 公司开发,使用 Scala 语言编写,之后成为 Apache 基金会的一个顶级项目。

2. kafka 产生背景

早期,kafka是用作 LinkedIn 的活动流(Activity Stream)和运营数据处理管道(Pipeline)。先把各种活动数据以日志的形式写入某种文件,然后周期性的对这些文件进行统计分析。

3. kafka 的应用场景

由于 kafka 具有更好的吞吐量、内置分区、冗余及容错性的优点(kafka 每秒可以处理几十万消息),让 kafka 成为了一个很好的大规模消息处理应用的解决方案。在企业级应用里,主要用作:

4. 基本架构组成

二 、集群搭建


1. 配置集群
2. 启动集群
sh kafka-server-start.sh -daemon ..config/server.properties
3.kafka命令行
sh kafka-topics.sh --create --zookeeper 192.168.1.110:2181 --replication-factor 1 --partitions 1 --topic test

replication-factor :副本
partitions:分区

sh kafka-topics.sh --list --zookeeper 192.168.1.110
sh kafka-console-producer.sh --broker-list 192.168.1.110:9092 --topic test
sh kafka-console-consumer.sh --bootstrap-server 192.168.1.110:9092 --topic test --from-beginning

三、在代码里使用


1. 引入依赖
 <groupId>org.apache.kafka</groupId>
 <artifactId>kafka-clients</artifactId>
 <version>2.1.0</version>
</dependency>
2. 配置说明
producer配置项
Consumer配置项
3. Spring - boot整合kafka

四、kafka定义和原理


1. Topic 和 Partition
topic

topic是存储消息的逻辑概念,不同的topic下的数据是分开存储的。不同的 topic 的消息是分开存储的, 每个 topic 可以有多个生产者向它发送消息,也可以有多 个消费者去消费其中的消息。

topic.png
partition

一个 topic 可以划分多个分区(每个 Topic至少有一个分区),同一topic下的不同分区包含的消息是不同的。第i个分区分配在第 i mod n 个broker上。

每个消息在被添加到分区时,都会被分配一个offset(称之为偏移量),它是消息在此分区中的唯一编号,kafka通过offset 保证消息在分区内的顺序,offset的顺序不跨分区,即kafka 只保证在同一个分区内的消息是有序的。


partition.png
2. offset

每个消息在被添加到分区时,都会被分配一个 offset(称之为偏移量),它是消息在此分区中的唯一编号,kafka 通过 offset 保证消息在分区内的顺序。offset 的顺序不跨分区,即 kafka 只保证在同一个分区内的消息是有序的; 对于应用层的消费来说,每次消费一个消息并且提交以后,会保存当前消费到的最近的一个 offset。

3. 消息的分发策略

消息是kafka中最基本数据单元。一条消息由Key、Value两部分构成,其中,key可以指定也可以不指定。默认情况下,kafka 采用的是 hash 取模算法决定消息存储到哪个分区。如果Key 为 null,则会随机分配一个分区。

4. 消息的消费策略

一个consumer group-0 里有3个consumer时,他们一起消费topic.test,这个test下有3个分区,怎么协调?

c1消费p0,c2消费p1,c3消费p2

kafka的策略是:一个分区只能由一个消费者消费。

分区分配策略:

5. 什么时候触发消费分配策略?

消费者分区分配策略又叫 consumer rebalance。当:

消费者 <= 分区数,若大于分区数,就会有闲置的消费者

partition最好是consumer的整数倍

上一篇 下一篇

猜你喜欢

热点阅读