kafka单机部署(kafka单机部署 不用zk)

本篇文章给大家谈谈kafka单机部署,以及kafka单机部署 不用zk对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表