今天跟大家聊聊我最近折腾的“kfk”的事儿,别想歪了,这可不是什么神秘代码,而是指 Kafka,一个消息队列系统,我这人就喜欢捣鼓这些东西,感觉能学到不少东西。
我只是听说 Kafka 很牛逼,各种高并发、大数据场景都能看到它的身影,心里痒痒,就想着自己也搭一套玩玩。说干就干,先是在自己的电脑上装了个虚拟机,装上 CentOS,算是有了个干净的环境。
安装 Kafka 这第一步就让我折腾了半天。先是装 JDK,配置环境变量,然后下载 Kafka 的安装包,解压。这期间各种权限问题,配置文件修改,搞得我头都大了。网上的教程也是鱼龙混杂,有些照着做根本行不通,只能自己一点点摸索,遇到问题就 Google,Stack Overflow 救了我无数次。
装好之后,启动 Kafka,发现又报错了。仔细一看,原来是 Zookeeper 没装。Kafka 依赖 Zookeeper 来管理集群,这玩意儿也得装。装 Zookeeper 的过程跟 Kafka 差不多,也是各种配置,各种启动,各种报错,反正就是一路踩坑过来的。
Zookeeper 也搞定了,Kafka 终于能跑起来了。接下来就是 创建 Topic,这是 Kafka 中消息的分类。我随便创建了一个叫做“test”的 Topic,然后用 Kafka 自带的命令行工具发送消息。消息能发出去,也能接收到,感觉挺简单的嘛
但是,这只是万里长征第一步。真正要用 Kafka,还得把它集成到自己的项目里。我写了一个简单的 Java 程序,用 Kafka 的 API 来发送和接收消息。这又是一番折腾,各种依赖包版本冲突,各种配置问题,烦得要死。
集成 Kafka 到 Java 项目 这部分最让我头疼的是序列化和反序列化。Kafka 默认是用字节数组来传输消息的,如果消息是对象,就需要先序列化成字节数组,接收到消息后再反序列化成对象。我试了 Java 自带的序列化方式,但是效率太低了。后来改用了 Kryo,性能提升了不少。
折腾了几天,总算把 Kafka 跑起来了,也能在自己的项目里用了。虽然只是个简单的 Demo,但是感觉收获很大。Kafka 确实很强大,但是配置和使用也比较复杂,需要花时间去学习和实践。这回折腾 Kafka,让我对消息队列系统有了更深入的了解,也算是给自己增加了一个技能点。
- 安装 Kafka 和 Zookeeper
- 创建 Topic 并发送接收消息
- 集成 Kafka 到 Java 项目
- 解决序列化和反序列化问题
这回“kfk”实践,从头到尾都是自己摸索着来的,虽然过程很痛苦,但是学到的东西也很多。以后有机会,还会继续深入研究 Kafka 的源码,看看它到底是怎么实现的。
还没有评论,来说两句吧...