第十七章 Kafka

本文详细介绍了ApacheKafka的特点,如高吞吐量、低延迟、高可扩展性等,以及其在不同场景的应用。并提供了单机版和伪集群的安装步骤,包括Zookeeper的配置和Kafka服务器的启动、Topic创建与消息交互操作。
摘要由CSDN通过智能技术生成

一、特性

- 高吞吐、低延迟
- 高伸缩性
- 持久性、可靠性
- 容错性
- 高并发
   
通过 O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以 TB 的消息存储也能够保持长时间的稳定性能。
高吞吐量:即使是非常普通的硬件 Kafka 也可以支持每秒数百万的消息。
支持通过 Kafka 服务器和消费机集群来分区消息。
支持 Hadoop 并行数据加载。
  

二、场景

- 消息传递
- 网站活动跟踪
- 指标监控
- 日志聚合
   

三、安装

3.1 单机版
   
1. 进入 /usr/local/soft 目录;
cd /usr/local/soft
  
2. 下载 kafka;
wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.13-2.5.0.tgz
  
3. 解压
tar -xzvf kafka_2.13-3.2.1.tgz
   
4. 启动 zookeeper;
- 后台启动 ZK:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties &
   
- 检查 zookeeper 是否启动成功:
ps -ef|grep zookeeper
    
5. 启动 kafka;
- 修改相关配置
vim config/server.properties
     # 取消注释,改成本机IP:
     listeners=PLAINTEXT://192.168.43.10:9092
     # num.partitions后面增加2行。
     # 发送到不存在topic自动创建。允许永久删除topic。
     num.partitions=1
     auto.create.topics.enable=true
     delete.topic.enable=true
   
- 后台启动 kafka(kafka 安装目录下):
nohup ./bin/kafka-server-start.sh ./config/server.properties &
  
6. 创建 Topic
- 创建一个名为 gptest 的 topic ,只有一个副本,一个分区:
sh bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic gptest

- 查看已经创建的 topic:
sh bin/kafka-topics.sh -list -zookeeper localhost:2181
      
7. 启动 Producer
- 打开一个窗口,在 kafka 解压目录下:
sh bin/kafka-console-producer.sh --broker-list localhost:9092 --topic gptest
   
8. 启动 Consumer
- 在一个新的远程窗口中:
sh bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic gptest --from-beginning
   
9. Producer 窗口发送消息
- 输入 hello world 回车
  
- 消费者收到了消息:
    
3.2 伪集群
1. 进入 /usr/local/soft 目录;
cd /usr/local/soft
  
2. 下载 kafka;
wget https://archive.apache.org/dist/kafka/2.5.0/kafka_2.13-2.5.0.tgz
 
3. 解压
tar -xzvf kafka_2.13-3.2.1.tgz
  
4. 启动 zookeeper;
- 后台启动 ZK:
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties &
   
- 检查 zookeeper 是否启动成功:
ps -ef|grep zookeeper
  
5. 修改配置文件
- 修改配置文件
     cd config
     cp server.properties server1.properties 
     cp server.properties server2.properties 
     cp server.properties server3.properties 
    
- 修改配置文件中的 broker.id 分别为 1、2、3
listeners 这一行取消注释,端口号分别为 9093、9094、9095
log.dirs 分别设置为`kafka-logs1、kafka-logs2、kafka-logs3(先创建)
   
mkdir -p /tmp/kafka-logs1 /tmp/kafka-logs2 /tmp/kafka-logs3
   
- server1.properties 的配置:
broker.id=1
listeners=PLAINTEXT://192.168.44.161:9093
log.dirs=/tmp/kafka-logs1
   
- server2.properties 的配置:
broker.id=2
listeners=PLAINTEXT://192.168.44.161:9094
log.dirs=/tmp/kafka-logs2
   
- server3.properties 的配置:
broker.id=3
listeners=PLAINTEXT://192.168.44.161:9095
log.dirs=/tmp/kafka-logs3
  
6. 启动 3 个服务
   cd ../bin
   ./kafka-server-start.sh -daemon ../config/server1.properties
   ./kafka-server-start.sh -daemon ../config/server2.properties
   ./kafka-server-start.sh -daemon ../config/server3.properties
     
PS:如果遇到 zk node exists 的问题,先把 brokers 节点删掉(临时解决方案)。
  
7. 集群下创建 Topic
- 在 bin 目录下,创建一个名为 `gptest` 的 `topic` ,只有一个副本,一个分区:
sh kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic gptest
  
- 查看已经创建的 topic:
sh kafka-topics.sh -list -zookeeper localhost:2181
  
8. 集群下启动 Consumer
- 在一个新的远程窗口中:
sh kafka-console-consumer.sh --bootstrap-server 192.168.44.161:9093,192.168.44.161:9094,192.168.44.161:9095 --topic gptest --from-beginning
  
9. 集群下启动 Producer
- 打开一个新的窗口,在 kafka 解压目录下:
sh kafka-console-producer.sh --broker-list 192.168.44.161:9093,192.168.44.161:9094,192.168.44.161:9095 --topic gptest
  
10. 集群下 Producer 窗口发送消息
- 在生产者窗口输入 hello world 回车。
- 在消费者窗口查看消息。
  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方寸之间不太闲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值