安装kafka之前需要先安装zookeeper集群,虽然卡夫卡有自带的zk集群,但是建议还是使用单独的zk集群
下面是搭建kafka时候整理的一些学习笔记
1.卡夫卡角色
消费者Consumer 消息队列中请求消息的客户端
生产者Producer 想broker发布消息的客户端
AMQP服务器端broker 接收生产者发布的消息,并路由给服务器中的队列
对于卡夫卡来说,一个broker为一个卡夫卡实例
主题概念(Topic):通常一个业务一个主题,一种类别 ?:卡夫卡集群中是否共享主题
分区概念(Partition):一个Topic的消息数据按照多个分区组织,Partition是卡夫卡消息队列组织中最小的单位
,一个分区可以看做事一个FIFO队列
卡夫卡会在每一台broker中备份Topic中的Partition
kafka虚拟机下载命令
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.10.1.0/kafka_2.10-0.10.1.0.tgz
配置文件:
server.properties
broker的基本的配置
broker.id 本机的broker在集群中的编号
port 当前的broker对外提供的tcp端口
host.name 当前broker服务绑定的ip地址,如果不配置,默认为localhost,dns域名解析有失败率,会导致文件句柄累计,
导致linux系统崩溃
num.network.threads broker进行网络线程处理的线程数
num.io.threads broker进行IO处理的线程数,IO线程数要大于log.dirs的数量
socket.send.buffer.bytes kafka发送消息缓冲区大小
socket.receive.buffer.bytes kafka接收消息的缓冲区大小,kafka缓冲区用于接收消息,当到达一定数量时序列化到磁盘
socket.request.max.bytes 像kafka发送消息的最大数,数量不能超过java堆栈大小
log.dirs 队列中消息持久化的地方,配置多个用逗号分隔,当配置多个时,持久化时会查看哪个目录消息数比较少
num.partitions 一个topic默认分区的个数
zookeeper.connect zookeeper集群的ip和端口 ,用逗号分隔
zookeeper.connection.timeout.ms 卡夫卡集群连接zookeeper集群的超时时间
log的刷新策略一般使用默认的
log的注入策略
log.retention.hours 发送到卡夫卡的消息的失效时间 默认的是168个小时
message.max.bytes 每条消息能容纳的最大值 默认是1 注意如果你增大这个尺寸,你也必须增大你consumer的fetch 尺寸,这样consumer才能fetch到这些最大尺寸的消息。
default.replication.factor 每个topic中的备份数量,默认是1个副本,一般改为两个副本
replica.fetch.max.bytes topic可复制的消息的最大值,一般和每条消息能容纳的最大值相对应
log.segment.bytes 消息序列化到文件,文件的最大大小
log.retention.check.interval.ms 每个多长时间检查当前消息持久化目录是否存在,和消息持久化是否失效,单位是秒
log.cleaner.enable=false 是否启用log压缩
其他选项
flush.messages 此项配置指定时间间隔:强制进行fsync持久化日志。例如,如果这个选项设置为1,那么每条消息之后都需要进行fsync,如果设置为5,则每5条消息就需要进行一次fsync。一般来说,建议你不要设置这个值。此参数的设置,需要在"数据可靠性"与"性能"之间做必要的权衡.如果此值过大,将会导致每次"fsync"的时间较长(IO阻塞),如果此值过小,将会导致"fsync"的次数较多,这也意味着整体的client请求有一定的延迟.物理server故障,将会导致没有fsync的消息丢失.
jbs 查看卡夫卡进程 ,jps是查看当前所有java进程Id的命令
后台启动kafka :./kafka-server-start.sh -daemon ../config/server.properties
创建topic命令 (zk地址) (topic名称) (分区数) (备份数) (消息的最大值) (每条都需要持久化)
bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --partitions 1 --replication-factor 1 --config max.message.bytes=64000 --config flush.messages=1
其余更多kafka配置
http://www.cnblogs.com/rilley/p/5391268.html点击打开链接