第十七章 Kafka

2024-04-02 15:52
文章标签 kafka 第十七章

本文主要是介绍第十七章 Kafka,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、特性

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

二、场景

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

三、安装

3.1 单机版
官网地址:https://kafka.apache.org/downloads
   
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=1auto.create.topics.enable=truedelete.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 configcp 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 回车。
- 在消费者窗口查看消息。

这篇关于第十七章 Kafka的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870405

相关文章

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

Java消息队列:RabbitMQ与Kafka的集成与应用

Java消息队列:RabbitMQ与Kafka的集成与应用 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在现代的分布式系统中,消息队列是实现系统间通信、解耦和提高可扩展性的重要组件。RabbitMQ和Kafka是两个广泛使用的消息队列系统,它们各有特点和优势。本文将介绍如何在Java应用中集成RabbitMQ和Kafka,并展示它们的应用场景。 消息队

Kafka (快速)安装部署

文章目录 1、软件下载&配置环境1_JDK安装2_Zookeeper安装3_Kafka安装 2、单机安装1_配置主机名和IP映射2_单机Kafka配置 3、集群安装1_配置主机名和IP的映射关系2_时钟同步3_Zookeeper配置信息4_集群Kafka配置 4、kafka的其他脚本命令 1、软件下载&配置环境 下面的操作无论是单机部署还是分布式集群环境下都是通用的。 准

Kafka 分布式消息系统详细介绍

Kafka 分布式消息系统 一、Kafka 概述1.1 Kafka 定义1.2 Kafka 设计目标1.3 Kafka 特点 二、Kafka 架构设计2.1 基本架构2.2 Topic 和 Partition2.3 消费者和消费者组2.4 Replica 副本 三、Kafka 分布式集群搭建3.1 下载解压3.1.1 上传解压 3.2 修改 Kafka 配置文件3.2.1 修改zookeep

Kafka 实战演练:创建、配置与测试 Kafka全面教程

文章目录 1.配置文件2.消费者1.注解方式2.KafkaConsumer 3.依赖1.注解依赖2.KafkaConsumer依赖 本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得 1.配置文件 Yml配置 spring:kafka:bootstrap-servers: cons

Kafka【十二】消费者拉取主题分区的分配策略

【1】消费者组、leader和follower 消费者想要拉取主题分区的数据,首先必须要加入到一个组中。 但是一个组中有多个消费者的话,那么每一个消费者该如何消费呢,是不是像图中一样的消费策略呢?如果是的话,那假设消费者组中只有2个消费者或有4个消费者,和分区的数量不匹配,怎么办? 所以这里,我们需要学习Kafka中基本的消费者组中的消费者和分区之间的分配规则: 同一个消费者组的消费者都订

Kafka【十三】消费者消费消息的偏移量

偏移量offset是消费者消费数据的一个非常重要的属性。默认情况下,消费者如果不指定消费主题数据的偏移量,那么消费者启动消费时,无论当前主题之前存储了多少历史数据,消费者只能从连接成功后当前主题最新的数据偏移位置读取,而无法读取之前的任何数据。如果想要获取之前的数据,就需要设定配置参数或指定数据偏移量。 【1】起始偏移量 在消费者的配置中,我们可以增加偏移量相关参数auto.offset.re

Kafka的三高设计原理

1.生产者缓存机制--高性能 生产者缓存机制的主要目的是将消息打包,减少网络IO频率 kafka生产者端存在消息累加器RecordAccumulator,它会对每个Partition维护一个双端队列,队列中消息到达一定数量后 或者 到达一定时间后,通过sender线程批量的将消息发送给kafka服务端。(批量发送) 2.发送应答机制--高可用 发送应发机制保证了消息可以安全到达服务端!