Terminal 4.

Kafka

2025/10/16
loading

如何在Linux下设置缩写命令命令-CSDN博客

Kafka原理

生产者消费者模式

生产者Producer ——消息队列MQ(Kafka)—— 消费者Consumer

每个事件在kafka中有一个唯一的序号offset

消费者可以通过offset来跟踪已消费事件,确保不会重复消费或漏消费,而且这些事件会被持久化到kafka中,即使某个服务暂不可用也不会丢失数据

相当于你玩戴森球,上一个产线产出之后放到a物流塔里,其他b物流塔选择本地需求然后从a中获取,不够就等着什么时候够了给你运过来

假设有个产物要2个原料,第一个原料早就准备好了,那就等第二个原料的产线产出,能被“订阅”之后再开始处理新的配方产出

主题Topic

可以将消息按照主题来进行分类和组织(多级反馈队列?mqtt?

每个主题还可以被进一步划分成多个partition分区

每个分区可以被不同的消费者线程并行处理

kafka只会保证每个分区内的消息是有序地,但是不同分区之间的消息顺序是不保证的

所以设置主题和分区时需要根据业务需求合理划分

常用的作法是把用户id作为分区的key,kafka会根据key的哈希来决定消息应该放到哪个分区,相同的key也就会被分到一个分区中

Broker

kafka集群通常由多个broker组成,每个broker都是一个独立的服务器,负责存储和转发消息。

每个broker可以存储多个主题的多个分区,并且每个分区可以有多个副本

副本是分区的备份,每个分区有一个Leader和多个Follower,Leader负责处理实际的对外读写请求,而Follower负责复制Leader的数据,保证即使某个Leader宕机也不会丢失数据

消费者组Consumer Group

多个消费者共享一个或多个主题的消息

每条消息只能被同一个消费者组中的一个消费者消费,但是可以被多个消费者组消费

安装配置

官方文档:

Step 1: Get Kafka

Download the latest Kafka release and extract it:

1
2
$ tar -xzf kafka_2.13-4.1.0.tgz
$ cd kafka_2.13-4.1.0

Step 2: Start the Kafka environment

NOTE: Your local environment must have Java 17+ installed.

Kafka can be run using local scripts and downloaded files or the docker image.

Using downloaded files

Generate a Cluster UUID

1
$ KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"

Format Log Directories

1
$ bin/kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties

Start the Kafka Server

1
$ bin/kafka-server-start.sh config/server.properties

Once the Kafka server has successfully launched, you will have a basic Kafka environment running and ready to use.

创建和管理主题

查看主题

1
bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

--bootstrap-server 连接到kafka服务的地址,localhost:9092 选择本地服务

--list 列出所有的主题 --describe 查看详细信息

创建主题

1
2
3
bin/kafka-topics.sh\
--bootstrap-server localhost:9092\
--create --topic my-topic

*加\可以多行输入

修改主题

1
bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name my-topic --alter --add-config retention.ms=10000

删除主题

1
2
3
bin/kafka-topics.sh\
--bootstrap-server localhost:9092\
--delete --topic my-topic

发送和接受消息

发送消息

1
2
3
4
5
bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic my-topic
>你是谁
>请支持奶龙
>^C

crrl+c 退出消息发送

接收消息

1
2
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic my-topic

程序中使用Kafka

CATALOG
  1. 1. Kafka原理
    1. 1.1. 主题Topic
    2. 1.2. Broker
    3. 1.3. 消费者组Consumer Group
  2. 2. 安装配置
    1. 2.0.0.1. Step 1: Get Kafka
    2. 2.0.0.2. Step 2: Start the Kafka environment
      1. 2.0.0.2.1. Using downloaded files
  • 3. 创建和管理主题
    1. 3.1. 查看主题
    2. 3.2. 创建主题
    3. 3.3. 修改主题
    4. 3.4. 删除主题
  • 4. 发送和接受消息
    1. 4.1. 发送消息
    2. 4.2. 接收消息
  • 5. 程序中使用Kafka