【IT168 技术】Kafka是由Scala和Java编写的最流行的发布者 - 订阅者模型之一。它最初由LinkedIn开发,后来经过开源。Kafka是一种高吞吐量的分布式发布订阅消息系统,因可以处理重负载而出名。本文介绍了从安装到设置整个过程中Kafka的各种配置属性。
安装
想要安装Kafka,首先就必须要安装Java。其次,ZooKeeper管理着Kafka的集群状态,为Kafka执行很多任务,因而对于Kafka来说,Zookeeper也是关键一步。
ZooKeeper安装程序
下载Zookeeper
解压文件。 在conf目录中,重命名文件zoo_sample.cfgas zoo.cfg。
zoo.cfg文件保存ZooKeeper的配置,即ZooKeeper实例将侦听的端口,数据目录等。
默认侦听端口是2181,您可以通过更改clientPort来更改此端口。
默认数据目录是/ tmp / data。这个默认数据目录需要改动,否则Zookeeper的数据可能随时被删除。使用Zookeeper目录中的名称数据创建一个文件夹,并更改zoo.cfg中的dataDir。
转到bin目录
通过执行命令./zkServer.sh start来启动ZooKeeper。
通过停止命令./zkServer.sh停止ZooKeeper。
Kafka设置
下载最新的Kafka稳定版本。
解压此文件。 Kafka实例(Broker)配置保存在config目录中。
转到配置目录。 打开文件server.properties。
从listeners属性中删除评论,即listeners=PLAINTEXT://:9092. Kafka broker将在9092端口侦听。
将log.dirs更改为/ kafka_home_directory / kafka-logs
检查zookeeper.connect属性并根据需要进行更改。Kafka broker 将连接到ZooKeeper instance。
转到Kafka主目录并执行命令./bin/kafka-server-start.sh config / server.properties。
通过命令./bin/kafka-server-stop.sh停止Kafka broker。
Kafka Broker属性
对于初学者来说,Kafka broker的默认配置就已经足够了,但是对于生产级别的设置来说,就必须要详细的了解每个配置。
broker.id:集群中broker实例的id
zookeeper.connect:ZooKeeper地址(可以为ZooKeeper集群列出逗号分隔的多个地址)。 例如:localhost:2181,localhost:2182
zookeeper.connection.timeout.ms:由于某种原因,broker无法连接,ZooKeeper的连接超时。
Socket服务器属性
socket.send.buffer.bytes:socket的发送缓冲区。
socket.receive.buffer.bytes:socket的接受缓冲区。
socket.request.max.bytes:服务器允许的最大请求大小, 这可以防止服务器内存不足。
Flush 属性
Kafka broker的每一条到达消息都会被写入段文件。这些数据不会直接被写入磁盘,在被写入之前会被缓冲。以下两个属性定义了何时将数据刷新到磁盘。Flush间隔过大可能导致Flush发生的同时出现latency spikes情况,间隔过小可能会导致过多的寻找。
log.flush.interval.messages:到达的消息计数阈值将所有消息刷新到磁盘。
log.flush.interval.ms:所有消息被刷新到磁盘的周期时间间隔。
Log 保留
如上所述,Kafka broker的每一条消息都会被写入段文件,以下属性则定义了这些文件何时会被删除。
log.retention.hours:分段文件可以被删除的最小年龄。
log.retention.bytes:日志基本规格大小的保留策略。除非其余段落在log.retention.bytes以下,否则段文件将在日志中被删除。
log.segment.bytes:将在其后创建的新分段文件大小。
log.retention.check.interval.ms:根据保留策略检查日志分段文件的间隔时间,以确定是否文件属性到达删除要求。 如果两个保留策略都已设置,则在满足任一条件时删除分段。