因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.1782.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控制台打印信息
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系我们会予以删除相关文章,保证您的权利。转载请注明出处






