kafka单机部署(kafka单机部署 不用zk)
本篇文章给大家谈谈kafka单机部署,以及kafka单机部署 不用zk对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Kafka 与RocketMQ 落盘机制比较
- 2、一台物理机上只能装部署一个kafka么
- 3、Kafka(四)集群之kafka
- 4、kafka2.8.0版本(一):搭建部署
- 5、ubuntu 怎么安装kafka
Kafka 与RocketMQ 落盘机制比较
引言
前几期的评测中,我们对比了Kafka和RocketMQ的吞吐量和稳定性,本期我们要引入一个新的评测标准——软件可靠性。
何为“可靠性”?
先看下面这种情况:有A,B两辆越野汽车,在城市的周边地区均能很好应对泥泞的路况。当一同开去穿越西藏,A车会因为西藏本地的汽油不达标,导致油路受阻无法点火,而B车顺利完成了穿越。因此我们说,B车的可靠性比A车高。
何为“软件可靠性”?
“软件的可靠性”就是考察软件在各种异常突发的情况下的应对能力。常见的软件异常有:磁盘损坏、进程意外退出、宿主机宕机等情况。
何为“消息中间件的可靠性”?
对于消息中间件来说,“可靠性”最直接的指标就是——消息数据不丢失。此外,消息不重投、服务一主多备等特性也可以用来评估可靠性。
那么Kafka和RocketMQ(以下简称RMQ)在可靠性上孰优孰劣呢?和我们走早李进本期的 测试 比拼吧!
测试目的
在消息收发的过程中,分别模拟Broker服务进程被Kill、物理机器掉电的异常场景,多次实验,查看极端情况下消息系统的可靠性。
测试场景
以下场景使用多个发送端向一个Topic发送消息,发送方式为同步发送,分区数为8,只启动一个订阅者。
场景1.模拟进程退出
在消息收发过衡腊程中,利用Kill -9 命令使Broker进程终止,然后重新启动,得到可靠性数据如下:
注:以上测试场景中Kafka的异步刷盘间隔为1秒钟,同步发送需设置request.required.acks=1,否则会出现消息丢失。
在Broker进程被终止重启,Kafka和RMQ都能保证同步发送的消息不丢,因为进程退出后 操作系统 能确保将该进程遗留在内存的数据刷到磁盘上。实验中,Kafka出现了极少量的消息重复。再次可以确定此场景中,二者的可靠性都很高。
场景2.模拟机器掉电
在消息收发过程中,直接拔掉Broker所在的宿主机电源,然后重启宿主机和Broker应用。因受到机房断电限制,我们在本场景测试中使用的是普通PC机器。得到可靠性数据如下:
测试发现,即使在并发很低的情况下,Kafka和RMQ都无法保证掉电后不丢消息。这个时候,就需要改变刷盘策略了。我们把刷盘策略由“异步刷盘”变更为“同步咐睁滑刷盘”,就是说,让每一条消息都完成存储后才返回,以保证消息不丢失。
注:关于两种刷盘模式的详细区别可以参照文档最下方的说明
重新执行上面的测试,得到数据如下:
首先,设置同步刷盘时,二者都没出现消息丢失的情况。限于我们使用的是普通PC机器,两者吞吐量都不高。此时Kafka的最高TPS仅有500条/秒,RMQ可以达到4000条/秒,已经是Kafka的8倍。
为什么Kafka的吞吐量如此低呢?因为Kafka本身是没有实现任何同步刷盘机制的,就是说在这种场景下测试,Kafka注定是要丢消息的。但要想做到每一条消息都在落盘后才返回,我们可以通过修改异步刷盘的频率来实现。设置参数log.flush.interval.messages=1,即每条消息都刷一次磁盘。这样的做法,Kafka也不会丢消息了,但是频繁的磁盘读写直接导致性能的下降。
另外,二者在服务恢复后,均出现了消息重复消费的情况,这说明消费位点的提交并不是同步落盘的。不过,幸好Kafka和RMQ都提供了自定义消费位点的接口,来避免大量的重复消费。
测试结论
在Broker进程被Kill的场景, Kafka和RocketMQ都能在保证吞吐量的情况下,不丢消息,可靠性都比较高。
在宿主机掉电的场景,Kafka与RocketMQ均能做到不丢消息,此时Kafka的吞吐量会急剧下跌,几乎不可用。RocketMQ则仍能保持较高的吞吐量。
在单机可靠性方面,RocketMQ综合表现优于Kafka。
附录:
测试环境
服务端为单机部署,机器配置如下:
应用版本:
测试脚本
同步刷盘和异步刷盘的区别
同步刷盘是在每条消息都确认落盘了之后才向发送者返回响应;而异步刷盘中,只要消息保存到Broker的内存就向发送者返回响应,Broker会有专门的线程对内存中的消息进行批量存储。所以异步刷盘的策略下,当机器突然掉电时,Broker内存中的消息因无法刷到磁盘导致丢失。
[img]一台物理机上只能装部署一个kafka么
kafka的部署模亮指式为3种嫌饥模式 1)单broker模式 2)单机多broker模式 (伪集群) 3)多机多broker模式芹键返 (真正的集群模式)
Kafka(四)集群之kafka
在章节二( )中,我们部署了单机的kafka,现在我们部署一套集群模式的kafka。
这里我准备了三台虚拟机:
192.168.184.134
192.168.184.135
192.168.184.136
每台机器部署一个zk和kafka。
上一章节中zk集群已经神中部署完毕。
在章节二中,134这台机器已经有kafka存在了,我们在另外两台机器上安装kafka:
在上面的文件中有几个关键点,我们一一进行配置,我会对配置中的说明翻译:
以下这两个listeners,advertised_listeners 是对外暴露的服务端口,真正建立连接用的是 listeners。
在内网中我们使用listenners就可以了,在docker等容器或云中使用advertised。游判山
下面这个是日志路径的配置
下面这个是个重点的东西,topic在磁盘上会分为多个partitions存储,相比单一文件存储,增加了并行性,在后续文章中会详细去讲解:
日志的保存时间:
以下是zookeeper的配置:
这里我们直接设置后台启动,三个节点都是如此:
这里面有个小坑,还记得之前我们搭建的单机环境吗?那时候默认的日志文件夹在/tmp/kafka-logs下面,生成了很多内容,导致我们134这个节点无法启动成功,报错如下:
解决这个问题只需要把/tmp/kafka-logs文件删除就好了。
看到日志出现这一句表明启动成功了:
下面我们验证下是否搭建成功了,首先使用kafkatool工机具连接看下:
我们在134节点创建一个topic:
查看topic列表:
在kafkatool中查看:
创建生产者:
创建消费者:
生成者发送冲游消息:
消费者接收消息:
到此为止,kafka的集群搭建已经完成了。在后面的文章我们会去学习如何在springboot中集成kafka。
kafka2.8.0版本(一):搭建部署
在新发布的kafka2.8.0版本中,已经可以不启动zk就可以使用kafka了,在config目录下多了一个kraft目录,在该目录中有一套新的配置文件,可以直接脱离ZooKeeper运行。
到kraft目录中修改server.properties文件,单机的话主要是修改下面的配置
需要把localhost修改卜芹厅为ip地址,否者别的节点连不上kakfa。
测试是否可以连接可以使用如下命令:首运
通过现在三行命令,即可开启一个单机的broker
这样脱离ZooKeeper的kafka就启动了,当前版本还型隐是测试阶段,所以官方不推荐使用。
ubuntu 怎么安装kafka
kafka官网下载 kafka_2.10-0.8.2.1.tgz并复制到虚拟机Ubuntu
2.1解压到该路径
tar zxvf kafka_2.10-0.8.2.1.tgz
sudo mv kafka /home/chen-pc/kafka
启动和停止
启动Zookeeper server:
Shell代码
bin/zookeeper-server-start.sh config/zookeeper.properties
其中是为了能退出命令行
kafka安装教程
停止Kafka server
Shell代粗猛码
bin/kafka-server-stop.sh
出现如下:
INFO Shutting down. (kafka.log.LogManager)
INFO Shutdown complete. (kafka.log.LogManager)
INFO Terminate ZkClient event thread. (org.I0Itec.zkclient.ZkEventThread)
INFO Session: 0x154957ee6bc0000 closed (org.apache.zookeeper.ZooKeeper)
INFO EventThread shut down (org.apache.zookeeper.ClientCnxn)
INFO [Kafka Server 0], shut down completed (kafka.server.KafkaServer)
kafka安装教程
停止Zookeeper server:
Shell代码
bin/zookeeper-server-stop.sh
出现如下:
[1]+ Exit 130 bin/zookeeper-server-start.sh config/zookeeper.properties
kafka安装教程
4.创建启动、关闭kafka脚本
cd /home/chen-pc/kafka
创建启动脚本
vi kafkastart.sh #编辑,添加以下代码
#!/bin/sh
#启动zookeeper
/home/chen-pc/kafka/bin/zookeeper-server-start.sh /home/chen-pc/kafka/config/zookeeper.properties
#等3秒后执行
sleep 3
#启动kafka
/home/chen-pc/kafka/bin/kafka-server-start.sh /home/chen-pc/kafka/config/server.properties
保存退出
vi kafkastop.sh #编辑,添加以下代码
#!/bin/sh
#关闭zookeeper
/home/chen-pc/kafka/bin/zookeeper-server-stop.sh /home/chen-pc/kafka/config/zookeeper.properties
sleep 3
#关闭kafka
/home/chen-pc/kafka/bin/kafka-server-stop.sh /home/chen-pc/kafka/config/server.properties
添宏州加脚本执行权限
chmod +x kafkastart.sh
chmod +x kafkastop.sh
以后启动kafka
sh /home/chen-pc/kafka/kafkastart.sh
Jps查看进程
kafka安装教程
关闭kafka
sh /home/chen-pc/kafka/kafkastop.sh
至此,Linux下Kafka单机安装配置完成。
4. 单节点kafka
sh /home/chen-pc/kafka/kafkastart.sh
Kafka创建topic
cd kafka
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
kafka安装教程
Kafka 删除topic
bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
查看topic
/home/chen-pc/kafka/岩绝桥bin/kafka-topics.sh --list --zookeeper localhost:2181
kafka安装教程
启动consumer producer,并在producer启动后的console输入一些信息
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
kafka安装教程
11
Kafka安装部署成功
关于kafka单机部署和kafka单机部署 不用zk的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。