SpringBoot整合Kafka【01】- 初识Kafka一、什么是Kafka Kafka属于Apache基金会下的一
一、什么是Kafka
Kafka属于Apache基金会下的一个项目,官方定义它是一个分布式事件流平台,常被用于高性能数据管道、流分析、数据集成和关键任务的应用程序。作为一个Java Boy,它常常被作为我们项目中的消息队列中间件来使用,关于消息队列的定义和用途不做赘述,默认大家都是有了解的。
更多的信息可以去翻阅Kafka官网
二、前置要求
Kafka是由Scala语言编写而成,而Scala又运行在Java虚拟机上,并兼容现有的Java程序,因此部署Kakfa的时候,需要先安装JDK环境。因此本地环境必须安装了Java 8+以上的版本(例如Java8、Java11、Java17、Java21这些长期支持的版本)。
关于JDK的安装,各位Java Boy肯定是会的,这里也不赘述。
另外,需要注意的是:Apache Kafka可以使用ZooKeeper或KRaft启动;但只能使用其中一种方式,不能同时使用。 而KRaft是Kafka内置的共识机制,用于取代 Apache ZooKeeper。
三、使用Docker启动运行Kafka
本系列的文章重点在于SpringBoot如何整合Kafka并使用它,因此选择通过Docker用最快的方式在本地部署运行,不涉及Kafka在服务器上的安装与部署,对这方面有需要的同学请自行查阅相关文档。
通过官网,我们可以知道当前最新的版本为3.8.0(Ps:后续读者请注意自己读到这篇文章的时间,自行去查看最新版本),如下:
那么我们就可以通过
docker pull apache/kafka:3.8.0
命令来拉取当前版本的镜像,如下:
接着再用
docker run -p 9092:9092 apache/kafka:3.8.0
命令来启动Kafka容器,如下:
至此,安装启动成功,大家觉得命令使用不方便的话,可以安装Docker桌面版,以图形化界面去管理我们的镜像,如下:
四、熟悉概念
1.认识主题和事件
使用Kafka之前,我们需要先熟悉两个名词,分别是Topic和Events,翻译成中文则分别是主题和事件。
事件(Events)也称为记录或消息,比如支付交易、手机地理位置更新、运输订单、物联网设备或医疗设备的传感器测量数据等等都是事件(Events),它们被组织和存储在主题(Topic)中。
所以,它们的关系类似于文件系统,主题(Topic)是文件夹,事件(Events)则是文件夹中的文件。我们使用Kafka,就离不开创建主题和事件。
2.对事件读写
有了主题和事件的概念,我们很自然地想到在使用中需要将事件写入主题以及从主题中读取事件,对事件的读写,我们需要知道以下几点:
- 事件Events是持久存储在Kafka中的,所以它们可以被任意多次读取;
- Kafka客户端通过网络与Kafka Brokers进行通信,可以写(或读)主题Topic中的事件Events;
- Kafka Brokers一旦收到事件Event,就会将事件Event以持久和容错的方式存储起来,可以永久地存储
这里的Brokers是指Kafka集群中的一台或多台服务器,我们也可以认为是Kafka的服务。
五、Kafka图形界面连接工具
作为一名Java Boy,肯定没少和数据库打交道,通常我们都会使用图形界面连接工具作为我们日常开发的工具,例如笔者自己就很喜欢Navicat。Kafka也不例外,我们在开发中需要自测观察数据的变化,因此就需要选择一个适合的图形化连接工具,目前主要有以下三种:
1.Offset Explorer(以前叫 Kafka Tool)
一款图形化连接Kafka的工具,它不是免费的。
2.CMAK(以前叫 Kafka Manager)
Github: github.com/yahoo/CMAK
CMAK是一个web后台管理系统,可以管理kafka。但CMAK要想用起来,有两个需要注意的点:一是需要JDK11版本的支持;二是必须是基于zookeeper方式启动kafka才可以使用该web管理后台,否则不行。
3.EFAK(以前叫 kafka-eagle)
Github:github.com/smartloli/E…
EFAK是一款国人开发的免费的Kafka集群监控工具,它也有两个需要注意的点:一是需要MySQL;二是它也需要确保kafka采用zookeeper方式启动。
4.IDEA里的Kafka插件(推荐)
毕竟IDEA应该是百分之九十九Java Boy的标配了,我们也只是想快速搭建个环境学习SpringBoot整合Kafka,前面的方法未免都有些太麻烦了,部署到线上了倒是需要个监控或者管理后台,所以这款插件就是首选了,如下:
这里可能会有同学反馈自己在插件市场里没搜到,那是因为你的IDEA的版本太低了,这款插件仅支持2023.02以上的版本,具体支持列表如下:
六、小结
本篇文章并不涉及实际整合,只是对Kafka做了一个初步的介绍以及前置的环境准备,通过这些介绍希望可以让大家建立起对Kafka的初步认识!
转载自:https://juejin.cn/post/7402826974140203071