kafka集群搭建及结合springboot使用

adminadmin 2025-03-21 145 阅读
1.场景描述

因kafka以前用的不多,只往topic中写入和读取过数据,这次刚好又要用到,记录下kafka集群搭建及结合springboot使用。

2.解决方案2.1简单介绍

(一)关于kafka,网上的介绍有很多,简单说就是消息中间件,大数据项目中经常使用,我们项目是用于接收日志流水数据。

(二)关于消息中间件,主要有四个:

(1)ActiveMQ:历史悠久,以前项目中使用多,现在更新慢,性能相对不高。
(2)RabbitMQ:可靠性高、安全,模式比较多,java使用比较多,每秒十万级别
(3)Kafka:分布式、高性能、跨语言,性能超高,每秒百万级别,模式简单。
(4)RocketMQ:阿里开源的消息中间件,纯Java实现,有商业版,收费,导致推广一般。

(三)kafka与其他三个相比,优势在于:

(1)性能高,每秒百万级别;

(2)分布式,高可用,水平扩展。

(四)kafka官网图

有中文官网,可以详细看看。

地址:

2.2软件下载2.2.1kakfa下载

地址:,下载最新的2.4.1。

2.2.2zookeeper下载

(1)因为kafka要依赖于zookeeper做调度,kafka中实际自带的有kafka,但是一般建议使用独立的zookeeper,方便后续升级及公用。

(2)下载地址:

,最新的是3.6.0,不过发布不久,建议先跟kafka内置zookeeper保持一致,使用3.5.7版本。

2.2.3下载说明

文件都不大,zk是9m多,kafka是50多兆

2.3kafka单机部署及集群部署

说明:软件老王本地弄了三台虚拟机,ip分别为:

192.168.85.158192.168.85.168192.168.85.178
2.3.1单机部署

(1)上传jar包,就不再新建用户了,直接在root账户下执行,将kafka和zookeeper的tar包上传到/root/tools目录下。

(2)解压

[root@ruanjianlaowang158tools]

(3)配置zookeeper及启动

[root@]软件老王,首先创建个空文件夹,在接下来的配置文件中配置[root@]cd/root/tools//conf[root@ruanjianlaowang158conf]=/tmp/zookeeperdataDir=/root/tools//datacd/root/tools//bin[root@ruanjianlaowang158bin]cd/root/tools/kafka_2.12-2.4.1mkdirdatacd/root/tools/kafka_2.12-2.4.1/config[root@ruanjianlaowang158config]需要改3个值listeners=PLAINTEXT://:9092listeners=PLAINTEXT://192.168.85.158:9092启动kafka[root@ruanjianlaowang158bin]././config/

启动完毕,单机验证就不验证了,直接在集群中进行验证。

2.3.2集群部署

(1)集群方式,首先把上面的单机模式,再在192.168.85.168和192.168.85.178服务器上先解压配置一遍。

(2)zookeeper是还是更改

158,168,178三台服务器一样:

[root@ruanjianlaowang158conf]/root/tools/kafka_2.12-2.4.1/config[root@ruanjianlaowang158config]三台服务器不一样,158服务器设置为1,168服务器设置为2,178服务器设置为3=1启动zookeeper[root@ruanjianlaowang158bin].//root/tools/kafka_2.12-2.4.1/bin[root@ruanjianlaowang158bin]cd/root/tools/kafka_2.12-2.4.1/bin[root@ruanjianlaowang158bin]软件老王,kafka集群服务器地址bootstrap-servers:192.168.85.158:9092,192.168.85.168:9092,192.168.85.178:9092producer:key-serializer:::group-id:testkey-deserializer::
2.4.3producer(消息生产者)
@RestControllerpublicclassKafkaProducer{@AutowiredprivateKafkaTemplatetemplate;//软件老王,topic使用上测试创建的aaaa@RequestMapping("/sMsg")publicStringsMsg(Stringtopic,Stringmessage){(topic,message);return"success";}}
2.3.4consumer(消费者)
@ComponentpublicclassKafkaConsumer{//软件老王,这里是监控aaaa这个topic,直接打印到idea中,软件老王@KafkaListener(topics={"aaaa"})publicvoidlisten(ConsumerRecordrecord){(()+":"+());}}
2.4.5验证结果

(1)浏览器上输入

http://localhost:8080/sMsg?topic=aaaamessage=bbbb

(2)软件老王的idea控制台打印信息

The End

[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系我们会予以删除相关文章,保证您的权利。转载请注明出处

上一篇 下一篇

相关阅读