kafka学习总结(含java生产者、消费者、Topic操作代码)

kafka(http://kafka.apache.org)是一款分布式消息发布和订阅的系统,具有高性能和高吞吐率。它的优点是能够直接使用磁盘进行存储、线性读写、速度快,避免了数据在JVM内存和系统内存之间的复制,减少耗性能的创建对象和垃圾回收。首先简单说明一下相关概念。
生产者(Producer):信息的发布者(publish)
消费者(Consumer):消息的接收者,也就是订阅者(subscribe)
话题(Topic):消费者发消息的对象,消费者也是从Topic中获取信息
组(Group):同一组的消费者对于同一消息只会收到一次,每一组都会对应一个id
分区(partitions):消费者接收消息的最小单位,实现了Kafka的高吞吐量

这里列出一张图来直观的看生产者与消费者的关系(图片来源:http://czj4451.iteye.com/blog/2041096)


可以看出多个broker协同合作,producer、consumer和broker三者之间通过zookeeper来协调请求和转发。
笔者使用Kafka来进行消息队列的分布式处理。包含一个生产者和多个消费者,这里最主要的地方就在于要让消费者接收到的数据都不一样并且在数量上尽量相近以实现负载均衡。因此对于Kafka分区是最关键的部分,在说具体应用之前还是从部署开始说起,笔者是在windows系统下做的代码编写与测试。
第一步是安装JDK环境这里不再多说。
第二步部署zookeeper:
去官网http://zookeeper.apache.org/releases.html#download下载压缩包,解压在某个文件夹下,然后将“zoo_sample.cfg”重命名为“zoo.cfg”,然后打开“zoo.cfg”编辑dataDir=“自己想放的目录下,一般是解压目录/tmp”,最后在系统环境变量中添加ZOOKEEPER_HOME = ”你的解压目录“, 编辑path系统变量,添加%ZOOKEEPER_HOME%\bin
最后打开命令行输入zkserver即可启动zookeeper,这里要注意的是使用kafka期间这个命令行窗口是不能关的。zookeeper的默认端口是2181.
第三步部署kafka:
从官网http://kafka.apache.org/downloads.html下载二进制(Binary )版本的kafka,同样解压找到配置文件server.properties,编辑log.dirs为自己想要存放的目录下,编辑zookeeper.connect=localhost:2181,笔者是在本地做的测试,所以使用localhost,应用时要按照实际情况进行修改,Kafka的默认端口为9092。最后在安装目录下按下Shift+右键,选择“打开命令窗口”选项,打开命令行。输入.\bin\windows\kafka-server-start.bat .\config\server.properties启动kafka。之后可以通过打开/bin/windows目录,同样按下Shift+右键,选择“打开命令窗口”选项,打开命令行进行相关操作,比如:
创建一个topic:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic test
删除一个topic
kafka-topics.bat --zookeeper localhost:2181 --delete --topic test
修改topic
kafka-topics.bat –zookeeper 127.0.0.1:2181 -–alter -–partitions 4 –topic test
其中partitions指的就是分区数,而java利用java字符串数组加上TopicCommand类也可以实现对于Topic的操作,包括增删改,具体实现代码如下:

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值