30分钟了解如何使用Kafka
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的入门,更加深入的知识还需要各位小伙伴一起去探索。
30分钟了解如何使用Kafka的更多相关文章
- 30分钟学会XAML
1.狂妄的WPF 相对传统的Windows图形编程,需要做很多复杂的工作,引用许多不同的API.例如:WinForm(带控件表单).GDI+(2D图形).DirectX API(3D图形)以及流媒体和 ...
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
- JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)
前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...
- 2016windows(10) wamp 最简单30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world
2016最简单windows(10) wamp 30分钟thrift入门使用讲解,实现php作为服务器和客户端的hello world thrift是什么 最简单解释 thrift是用来帮助各个编程语 ...
- 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- 30分钟?不需要,轻松读懂IL
先说说学IL有什么用,有人可能觉得这玩意平常写代码又用不上,学了有个卵用.到底有没有卵用呢,暂且也不说什么学了可以看看一些语法糖的实现,或对.net理解更深一点这些虚头巴脑的东西.最重要的理由就是一个 ...
- 【grunt第二弹】30分钟学会使用grunt打包前端代码(02)
前言 上一篇博客,我们简单的介绍了grunt的使用,一些基础点没能覆盖,我们今天有必要看看一些基础知识 [grunt第一弹]30分钟学会使用grunt打包前端代码 配置任务/grunt.initCon ...
- Objective-C 30分钟入门教程
Objective-C 30分钟入门教程 我第一次看OC觉得这个语言的语法有些怪异,为什么充满了@符号,[]符号,函数调用没有()这个,但是面向对象的高级语言也不外乎类,接口,多态,封装,继承等概念. ...
- AngularJS 30分钟快速入门【译】
引用自:http://www.revillweb.com/tutorials/angularjs-in-30-minutes-angularjs-tutorial/,翻译如下: 简介 我三年前开始使用 ...
随机推荐
- 【Rewrite重定向】Nginx使用rewrite重新定向
使用nginx做重新定向. nginx参考网址:http://blog.sina.com.cn/s/blog_97688f8e0100zws5.html 语法规则: location [=|~|~*| ...
- typed.js
实现效果,文字逐个输出. 实例代码: <script> $(function(){ $("#head-title").typed({ strings: ["为 ...
- ide vscode安装
在linux系统中安装VSCode(Visual Studio Code) 在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包(话说下载下来解压就直接 ...
- Linux中顿号
``的作用是运行``之间的命令,并且将命令运行的结果返回.一般shell脚本应该是这样:result=`ls -l` (用你的命令替换ls -l,这里只是举例)这样,result就有``里面的运行结果 ...
- kafka监控工具之一--kafka-manager
部署环境 jdk7 kafka_2.10-0.9.0.1 xshell4 rhel-server-6.5 kafka-manager 是功能比较多的kafka管控工具. 安装方法一 安装方法二 步骤一 ...
- linux 安装软件的几种方法
一. 解析Linux应用软件安装包: 通常Linux应用软件的安装包有三种: 1) tar包,如software-1.2.3-1.tar.gz.它是使用UNIX系统的打包工具tar打包的. 2) rp ...
- 关于hibernate中的session与数据库连接关系以及getCurrentSession 与 openSession() 的区别
1.session与connection,是多对一关系,每个session都有一个与之对应的connection,一个connection不同时刻可以供多个session使用. 2.多个sessi ...
- 20145122《 Java网络编程》实验五实验报告
实验名称 Java网络编程 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 结对小伙伴 20145120黄玄曦 博客地址:http://www.cnblo ...
- 20145302张薇 《网络对抗技术》 web安全基础实践
20145302张薇 <网络对抗技术> web安全基础实践 实验问题回答 1.SQL注入攻击原理,如何防御 原理:攻击者把SQL命令插入到网页的各种查询字符串处,达到欺骗服务器执行恶意的S ...
- VC++ 进度条更新方案
在实际开发中,如果有耗时操作,一般会在工作线程处理数据,然后处理完成后把时间传递到UI线程进行显示,切记不要在工作线程对UI进行操作. 场景: 1. 很多程序需要根据处理业务的进度来更新进度条,进度条 ...