一.Kafka入门到精通-Kafka快速入门
前言
在内卷严重的程序员圈子中,原地踏步就是退步,所以不能再躺平啦,赶紧爬起来学习,接下来博主将推出《Kafka入门到精通》系列文章,让你可以在企业中玩起Kafka来得心应手,此乃升职加薪必备呀。
Kafka认识
Kafka 是由Linkedin公司开发的,支持多分区、多副本,基于 Zookeeper 的分布式消息流平台,是一款基于发布订阅模式的开源消息引擎系统。相对于其他的消息组件来说Kafka拥有更好的吞吐量、内置分区、具有复制和容错的功能,这使它成为一个非常理想的大型消息处理应用。使用场景如:网页浏览记录,日志收集,监控数据等等。
Kafka 的标准定位是分布式流式处理平台,早期的定位是以消息引擎的身份出现的,随着 Kafka 的不断演进, Kafka 开发团队日益发现经 Kafka 交由下游数据处理平台做的事情 Kafka 自己也可以做,因此在 Kafka 0.10.0.0 版本正式推出了 Kafka Streams ,即流式处理组件 。自 Kafka 正式成为了 个流式处理框架,而不仅仅是消息引擎了。
如图所示,Kafka的工作流程为
- 生产者发送消息到Kafka集群
- 消费者从Kafka拉取消息
- Kafka依赖于Zookeeper处理服务的协调
Kafka快速安装(windows)
官方文档:https://kafka.apache.org/31/documentation.html#quickstart
第一步:下载kafka ,https://kafka.apache.org/downloads
注意:kafka是使用Scala开发,所以版本号是由 Scala的版本号和Kafka版本号组成的,如:kafka_2.12-3.2.0 , 2.12是scala版本, 3.2.0是kafka版本
下载后解压,目录结构如下
- bin :kafka的执行脚本 ,其中包括启动kafka的脚本:kafka-server-start.bat 和 zookeeper-server-start.bat 启动zookeeper的脚本(kafka内置有zookeeper) ,bin/windows 目录中的脚本是针对windows平台。
- config : 配置文件目录 ,包括server.properties :kafka的配置 ; zookeeper.properties :zookeeper的配置, producer.properties:生产者的配置 ; consumer.properties 消费者的配置等等。
- libs : 依赖的三方jar包
启动zookeeper
为了方便操作,你可以给kafka配置一下环境变量 。 由于Kafka 使用 ZooKeeper作为服务协调工具, 如果你还没有ZooKeeper服务器,你需要先启动一个ZooKeeper服务器,我们直接使用kafka内置的ZooKeeper 即可,进入到bin\windows 目录,执行如下列命令(windows):
zookeeper-server-start.bat ../../config/zookeeper.properties
如果是在linux启动,执行到bin目录下的启动脚本即可,执行下面命令
zookeeper-server-start.sh ../config/zookeeper.properties
zookeeper.properties是作为zookeeper的配置文件,比如你想修改zookeeper的默认端口通过配置文件修 clientPort=2181项即可 ,如下:
- dataDir : 数据存储目录
- clientPort :端口
启动效果如下
启动Kafka
Zookeeper的端口是2181接下来我们启动 Kafka 务器,进入到bin\windows 目录,执行如下列命令(windows):
kafka-server-start.bat ../../config/server.properties
server.properties作为kafka的配置文件,我们关注下面几个配置,你也可以根据情况进行修改
- broker.id =0 : 如果是做个多个kafka主机集群,那么brocker.id不能重复,0 ;1 ;2 增长
- zookeeper.connect : zookeeper的地址 ,如果有多个zk就用逗号隔开配置多个地址
- num.partions = 1 : 默认partions 数量默认为1
- log.dirs : 日志目录,不建议放到tmp临时目录,一定要修改,如:log.dirs=d:/kafka-logs
启动效果如下
控制台输出结尾处的“ Kafka Server O], started ,标志 Kafka 服务器启动成功,默认的服务端口是 9092
命令行演示消息的生产和消费
前面我们已经了解过,生产者负责发送消息到 kafka ,kafka负责存储消息,消费者从kafka订阅消费消息,如下图:
kafka是通过topic(主题)来对消息进行分类,也就是说发送者发送消息时需要指定消息发送到哪个topic中,而topic是由多个partition(可以理解为分区)组成。partition数量默认为1,topic必须指明创建。
TOPIC的创建
kafka-topics.bat 脚本
官方文档:https://kafka.apache.org/31/documentation.html#quickstart , 请注意不同的kafka版本需要看不同版本的文档哦。
安装目录\bin\windows\kafka-topics.bat :是供针对topic的操作脚本,可对topic进行crud,使用cmd 输入kafka-topics.bat可以查看到kafka-topics.bat的帮助说明
这里我这里贴了一下几个核心的相关参数
参数名称 | 解释 |
---|---|
alter | 用于修改主题,包括分区数及主题的配置 |
config <键值对> | 创建或修改主题时,用于设置主题级别的参数 |
create | 创建主题 |
delete | 删除主题 |
delete-config <配置名称> | 删除主题级别被覆盖的配置 |
describe | 查看主题的详细信息 |
help | 打印帮助信息 |
if-exists | 修改或删除主题时使用,只有当主题存在时才会执行操作 |
if-not-exists | 创建主题时使用,只有主题不存在时才会执行动作 |
list | 列出所有可用的主题 |
partitions <分区数> | 创建主题或增加分区时指定分区数 |
replica-assignment <分配方案> | 手工指定分区副本分配方案 |
replication-factor <副本数> | 创建主题时指定副本因子 |
topic <主题名称> | 指定主题名称 |
zookeeper | 指定连接的zookeeper地址信息(必填项) |
创建TOPIC
使用如下命令创建一个名字为 topic-hello 的topic主题
D:\opensource\kafka3.2\bin\windows>kafka-topics.bat --bootstrap-server localhost:9092 --create --topic topic-hello
上面命令会创建一个名字为 topic-hello
的主题,默认 Partition数量为1,当然可以通过增加 --partitions 1
参数指定分区数量 ,可以通过 --replication-factor 1
指定副本数量(后面会说到) 效果如下:
- bin\windows\kafka-topics.bat : 是kafka提供针对topic的操作脚本,可对topic进行crud
- –create : 表示要创建一个topic,
- –topic :表示要创建topic 名字为 topic-hello
- –bootstrap-server localhost:9092 : 表示连接到kafka服务
查看TOPIC
使用 --list
命令查看所有topic
D:\opensource\kafka3.2\bin\windows>kafka-topics.bat --bootstrap-server localhost:9092 --list
效果如下:
修改分区
创建好topic之后,可以使用 kafka-topics 修改更改主题的配置或分区,命令如下:
kafka-topics.bat --bootstrap-server broker_host:port --alter --topic my_topic_name --partitions 40
删除TOPIC
使用 --delete
命令删除一个TOIC ,语法如下:
kafka-topics.sh --bootstrap-server broker_host:port --delete --topic my_topic_name
生产者发送消息
Kafka 默认提供了脚本工具 kafka-console-producer.bat
可以不断地接收标准输入并将它们发送到 Kafka 的某个 topic用户在控制台终端下启动该命令,输入一行文本数据,然后该脚本将该行文本封装成Kafka 消息发送给指定的 topic .为了使用该脚本工具发送消息,用户需要再打开 个新的终端,执行下列命令:
D:\opensource\kafka3.2\bin\windows>kafka-console-producer.bat --bootstrap-server localhost:9092 --topic topic-hello
>hello
>ni hao
上面命令往 topic-hello 这个主题中发送了两行消息 , 如果需要结束生产者客户端的话使用 ctrl+c
消费者消费消息
同样Kafka提供了针对于消费者的脚本, kafka-console-consumer.bat
可以方便的从Kafka中订阅和消费消息,我们打开新的终端执行命令:
D:\opensource\kafka3.2\bin\windows>kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic topic-hello --from-beginning
hello
ni hao
上面命令是通过客户端:消费topic-hello主题中的消息, --from-beginning
表示获取历史数据,即使消费者宕机了也可以拿到曾经生产者发送的消息 。需要结束消费者者客户端的话使用 ctrl+c
如果是在linux环境中那么就使用 bin目录下的对应脚本即可, 另外 kafka-console-consumer 和 kafka-console-producer 还有很多参数可以指定,如果不加任何参数直接执行他们可以打印各自的帮助文档。
文章就写到这里把,本篇文章我们对Kafka进行了windows环境的安装,同时使用kafka提供的脚本演示了 topic创建,消息发送,消息消费的过程。相信各位对Kafka已经有了一个基本的认识,下一章我将带你深入理解Kafka的架构核心和高并发高吞吐量的原理。
点赞还是要求一下的,万一屏幕面前的大帅哥或者大漂亮就评论收藏了呢?
一.Kafka入门到精通-Kafka快速入门相关推荐
- 动脑学院Python从入门到精通系列快速入门(0)
写在前面的话 "动脑学院"的Python系列课程,学习记录整理在这里,方便日后不断温习.课程分为四个阶段,如图.我也在慢慢学习,尽量每次学习完都整理笔记,并且!最重要的是!!保持学 ...
- 二.Kafka入门到精通-Kafka核心概念
前言 上一篇我们认识了一下Kafka以及完成了一个快速入门程序.这篇文章我们将学习Kafka的整体架构,工作流程,以及一些核心概念,正所谓知其然知其所以然. Kafka的架构 我们知道,消息队列的工作 ...
- 视频教程-从入门到精通Access快速学习系列课程第2部-其他
从入门到精通Access快速学习系列课程第2部 十几年管理软件开发实战经验.从事IT行业十 余年,多年IT技术培训经验,课程编排重在实用 ,讲解通俗易懂. 王西猛 ¥39.00 立即订阅 扫码下载「C ...
- .NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用
写在前面 上面文章我给大家介绍了Dapper这个ORM框架的简单使用,大伙会用了嘛!本来今天这篇文章是要讲Vue的快速入门的,原因是想在后面的文章中使用Vue进行这个CMS系统的后台管理界面的实现.但 ...
- .NET Core实战项目之CMS 第五章 入门篇-Dapper的快速入门看这篇就够了
写在前面 上篇文章我们讲了如在在实际项目开发中使用Git来进行代码的版本控制,当然介绍的都是比较常用的功能.今天我再带着大家一起熟悉下一个ORM框架Dapper,实例代码的演示编写完成后我会通过Git ...
- c语言 人工智能程序入门,C语言程序设计——快速入门与提高
课程概况 为什么要学习C语言 1.C简单好学,上可表达人的思想,下可管理硬件,是顶天(人)立地(机)的语言. 2.C和操作系统Unix是孪生兄弟,所有操作系统包括Windows,Android,IOS ...
- 零基础python从入门到精通 pdf-PYTHON从入门到精通 PDF 下载
相关截图: 资料简介: <Python从入门到精通>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术.全书共分22章,包括初 ...
- python基础一入门必备知识-Python快速入门指南基础知识详细说明
随着人工智能大火,我们身边几乎处处充满着AL的气息,就连停车,都是机器人值班了. 可是很多人都不知道人工智能是由什么开发的,各种相关联的框架都是以Python作为主要语言开发出来的. Python本身 ...
- python3入门-终于懂得python3快速入门教程
跟Java语言一样,python语言也有类的概念,直接使用class关键字定义python类.在python类,定义类的方法.然后直接使用类的初始化调用自身,获取相应的属性.以下是小编为你整理的pyt ...
最新文章
- 如何使用Intel vtune profilier?
- 自定义顶部菜单navigationBar方式
- Kail Linux渗透测试实训手册第3章信息收集
- python打开哪个答案_关于 Python 文件的 ‘r’ 打开模式,哪个选项的描述是正确的?_学小易找答案...
- jquery给轮播图的第一张设置class样式
- python matplotlib画图遇到的问题——画多个子图
- 力扣199. 二叉树的右视图(JavaScript)
- preg_match
- Python标准库32个模块的整理
- win10设置计算机关机时间,w10怎么设置自动关机_win10电脑设置自动关机的方法
- 输入框字数统计--过滤拼音
- FortiGate常用命令
- 【机器学习 基本概念】监督学习、无监督学习、半监督学习与强化学习
- matlab解算平差实例,MATLAB软件在测量平差解算中的应用
- 什么是php 的精华,PHP之精髓
- PLL为什么可以倍频
- php information
- 清华优博论文丨物体检测中的特征构建与模型优化
- Python用雷达图展示某学生成绩问题/2020年12月
- 全新视角定义云呐企业资产管理系统
热门文章
- 林 锐《大学十年 —— 一个程序员的历程》值得成功和欲成功的朋友品读(转载)(上)
- 16、计时器方法2(setTimeout、clearTimeout、防抖、节流)
- mangos服务器的游戏对象和ai系统,(搬运工)Mangos服务器的游戏对象和AI系统(一)
- 计算机无法唤醒,电脑待机后鼠标无法唤醒电脑怎么办?
- WPF滚动条自动下拉实现
- 甲肝、乙肝、丙肝----肝、肝、肝!
- 【转】Vim 字符编码转换
- 电脑多网卡模式下,使用特定网口发送HTTP请求的代码实现(HttpClient4、Socket)
- 已有数据库(单机)部署Database Vault
- 百度网盘下载大文件,不用百度云管家