30分钟了解如何使用Kafka

▼魔方 西西 提交于 2020-04-26 08:14:44

Kafka是当下对海量数据提供了最佳支持的MQ中间件,无论是高并发的处理,还是依托zookeeper的水平拓展都有不俗的特性。由于公司最近也在尝试如何将它应用到开发中以对业务更好的支撑,因此特地分享一些安装和使用的心得。

一、安装与启动

服务器环境采用CentOS 7 x64位系统。实际使用中Kafka依赖Zookeeper进行Broker管理,测试环境我们可以只使用Kafka自带的Zookeeper。

Kafka运行依赖JVM,首先需要安装Java

java-1.8.0-openjdk-1.8.0
java-1.8.0-openjdk-devel

解压Kafka并将解压的文件放置到系统目录下

tar -zxvf kafka_2.12-2.1.0.tgz
mv kafka_2.12-2.1.0 /usr/local/kafka

进入kafka下的config目录,打开zookeeper.properties文件,确定端口号(默认:2181)

打开server.properties文件修改以下配置

broker.id=1 #这个属性是kafka需要提交给zookeeper注册的Key
num.partitions=3 #主题的默认分区数,可选修改,默认为1
listeners=PLAINTEXT://<host>:9092 #配置当前主机ip,这个是broker的通信地址
zookeeper.connect=localhost:2181 #zookeeper的地址
group.initial.rebalance.delay.ms=3 #集群环境下的节点平衡时间,默认是0

启动服务

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties #启动zookeeper服务
bin/kafka-server-start.sh -daemon config/server.properties #启动kafka服务

最后Jps查看结果

> 13587 Kafka
> 13604 Jps
> 13269 QuorumPeerMain

二、创建主题——生产者与消费者

创建主题

kafka-topics.sh --create --topic test --zookeeper localhost:2181 --partitions 1 --replication-factor 1

我们分别指定了操作类型(create),主题(test),zookeeper的地址(localhost:2181),分区数(1),副本数(1)

查询主题

bin/kafka-topics.sh --list --zookeeper localhost:2181

启动生产者

bin/kafka-console-producer.sh --topic test --broker-list <host>:9092

打开另一个终端启动消费者监听test主题

bin/kafka-console-consumer.sh --topic test --bootstrap-server  <host>:9092 --from-beginning

三、使用辅助Web工具:kafka-mamage

下载:网上的资源很多,不乐意从百度云下载的可以在我的QQ群获取(960652410)

修改配置文件application.conf

kafka-manager.zkhosts="localhost:2181"

后台启动

nohup ./bin/kafka-manager -Dconfig.file=./conf/application.conf -Dhttp.port=8080 >kafka-manager.log 2>&1 &

具体操作网上有大量的现成案例,我主要想说一下为什么选择kafka-manager。按照别人的说法似乎KafkaOffsetMonitor是最佳选择,但是KafkaOffsetMonitor是使用AngularJs开发的页面工具,js资源需要google的支持(防火长城了解一下)。所以权衡再三,我还是选择了后者。当然有兴趣的同学也可以根据实际情况自己开发一个监控工具,由于kafka提供了librdkafka的C/C++开源库自己写一个简单难度其实也不大。我的群里就有我自己使用Qt开发的linux版本的监听工具。 

 

后记:这里仅仅是对Kafka的入门,更加深入的知识还需要各位小伙伴一起去探索。

原文出处:https://www.cnblogs.com/learnhow/p/10159906.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!