Kafka基础——基本概念和安装使用

Apache Kafka是一个分布式消息系统,由LinkedIn开发并维护,支持多订阅者和高可用性。它用于日志收集、网站行为追踪、审计数据收集等多种场景。Kafka的核心组件包括broker、topic、partition、offset和replica,提供点对点和发布-订阅两种消息传递模式。安装Kafka需要先安装Zookeeper,然后配置并启动服务,最后创建主题和测试消息的生产和消费。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本概念和术语

简介

Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式消息系统,使用scala语言开发,基于zookeeper进行协调,多分区、多副本。
其使用场景如下:

  1. 消息系统:在业务系统中经常用到,最常见的是解耦,当然,还具有削峰、异步通信、缓冲等功能
  2. 网站行为追踪:Kafka最早是用于重建用户行为数据追踪系统的,很多网站上的用户操作都会以消息的形式发送到Kafka的某个对应的topic上
  3. 审计数据收集:很多企业和组织都需要对关键的操作和运维进行监控和审计。这就需要从各个运维应用程序处实时汇总操作步骤信息进行集中式管理。Kafka可以便捷对多路消息进行实时收集,同时由于其持久化的特性,使得后续离线审计成为可能。
  4. 日志收集:我们每个系统都会产生大量的服务日志,这些日志分散在不同的机器上。我们可以使用Kafka对它们进行全量收集,井集中存储到分布式存储中(比如HDFS等)。

术语解释

  1. broker:Kafka集群包含一个或多个服务器,服务器节点称为broker。
  2. topic(主题):从概念上来说, topic 只是一个逻辑概念,代表了一类消息,也可以认为是消息被发送到的地方。通常我们可以使用topic来区分实际业务,比如业务A使用一个topic ,业务B使用另外一个 topic。
  3. partition:多个partition组成了topic,partition是不可修改的有序消息序列,每个partition有自己专属的 partition号,通常是从0开始的。一般对partition做的操作就是在消息序列的尾部追加写入消息。
  4. offset:partition上的每条消息都会被分配一个唯一的序列号,该序列号被称为offset。
  5. replica:为防止其中保存数据partition的服务器挂掉数据丢失,所以Kafka就对其进行备份,这些被称作副本(replica)。副本分为两类:领导者副本(leader replica)和追随者副本(follower replica),follower replica是不能提供服务给客户端的,也就是说不负责响应客户端发来的消息写入和消息消费请求。它只是被动地向领导者副本(leader replica)获取数据,而一旦leader replica所在的broker岩机,Kafka会从剩余的follower replica中选举出新的leader续提供服务。
  6. leader:为当前负责数据读写的partition。
  7. follower:follower跟随leader,所有写请求都通过leader路由,数据变更会广播给所有follower,follower与leader保持数据同步。如果leader失效,则从follower中选举出一个新的leader。
  8. producer:生产者即数据的发布者,该角色将消息发布到Kafka的topic中。broker接收到生产者发送的消息后,broker将该消息追加到当前用于追加数据的segment文件中。生产者发送的消息,存储到一个partition中,生产者也可以指定数据存储的partition。
  9. consumer:消费者可以从broker中读取数据。消费者可以消费多个topic中的数据。
  10. consumer group:每个consumer属于一个特定的consumer group(可为每个consumer指定group name,若不指定group name则属于默认的group)。
  11. ISR:全称是 in-sync replica ,翻译过来就是与leader replica保持同步的replica集合 。

消息传递模式

  1. 点对点消息传递模式
    在点对点消息系统中,消息持久化到一个队列中。此时,将有一个或多个消费者消费队列中的数据。但是一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。
  2. 发布-订阅消息传递模式
    在发布-订阅消息系统中,消息被持久化到一个topic中。与点对点消息系统不同的是,消费者可以订阅一个或多个topic,消费者可以消费该topic中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布-订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。

安装

安装之前我们需要吧zookeeper安装好,并启动。

下载安装包

Kafka的官网的下载地址是:https://kafka.apache.org/downloads
在这里插入图片描述

解压

tar -xvf kafka_2.12-3.2.0.tgz

修改配置

# broker 的编号,如果集群中有多个 broker,则每个 broker 的编号需要设置的不同
broker.id=0
# 修改 zookeeper.connect为自己的zookeeper地址
zookeeper.connect=localhost:2181/kafka
# 修改日志路径
log.dirs=/usr/local/kafka/kafka-logs

其他参数含义拿翻译软件翻译一下就明白了

测试

# 启动
nohup ./kafka-server-start.sh ../config/server.properties
# 创建主题
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
# 发送消息 
./kafka-console-producer.sh --broker-list localhost:9092 --topic test 

在这里插入图片描述

# 消费消息
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

在这里插入图片描述

开机启动

  1. 编写启动项
vim /lib/systemd/system/kafka.service
[Unit]
Description=kafkaservice
After=network.target 
   
[Service] 
Type=forking 
Environment=JAVA_HOME=/usr/local/java/jdk1.8.0_301
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh
Restart=on-failure
   
[Install] 
WantedBy=multi-user.target
  1. kafka加入开机服务并启动
systemctl daemon-reload
systemctl enable kafka
systemctl start kafka
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值