Kafka 安装实践笔记

最近终于有须要消息队列的业务需求出现了,就决定本身搭建一个Kafka集群做为业务测试用。若是没问题的话就不去购买云服务了,还能省下很多钱呢。对于Kafka以前本身也写过demo稍微了解了一下,此次就把实践的要点记录下来。html

安装Kafka

Kafka的安装能够说是很是简单了。java

  • 首先去官网找到下载连接,注意要下载二进制版本。
  • 而后用wget下载到服务器上,再解压(tar xzvf)就ok了
  • Kafka是依赖于zookeeper的,不过官方的安装包里已经自带了zookeeper,单机版直接用已经写好的脚本启动就能够了,我是按文档搭了个zookeeper集群。
bin/zookeeper-server-start.sh config/zookeeper.properties
须要后台运行的加 -daemon 参数
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
用netstat -ntlp命令能够看到
tcp        0      0 0.0.0.0:2181            0.0.0.0:*               LISTEN      {pid}/java
就是启动成功了。
复制代码

服务器参数配置,Broker Configs

参数配置很是的重要,这里只是重点讲下几个基本都要配置的点。首先打开配置文件,vi config/server.propertiesspring

broker.id

broker.id指的是当前节点的id,必须是惟一不重复的整数。apache

例子: broker.id=0bash

advertised.listeners

advertised.listeners,设置这个是为了让客户端拿到正确的主机地址,默认是拿的java.net.InetAddress.getCanonicalHostName()的值,会拿到相似于izbp1i1jfn47dnqehu39pez:9092这样的地址,因此就报链接错误了。服务器

例子: advertised.listeners=PLAINTEXT://111.222.333.444:9092并发

log.dirs

log.dirs指的是消息存放的目录,能够指定多个用,分隔,默认是/tmp/kafka-logs。这里有个坑/tmp目录是会不按期清理数据的,因此放这里可能消息就会神秘消失。建议指定一个其余的目录。框架

例子: log.dirs=/mnt/kafka-logstcp

zookeeper.connect

zookeeper.connect指的是zookeeper的链接地址,集群要写多个,注意多台服务器要能联通。测试

例子: zookeeper.connect=111.16.212.244:2181,222.16.212.243:2181,333.16.212.236:2181

log.cleanup.policy

log.cleanup.policy指的是消息的清理策略,默认是168小时前的消息会被删除。能够改成压缩消息,同一个key的消息只保留最新的。不过建议在topic里设置,能够把重要的消息设置为压缩,不重要的设置为删除。

例子: log.cleanup.policy=compact

num.partitions

num.partitions指的是主题的默认分区数量。默认值是1,建议改为50,由于一个分区只容许一个消费者消费,分区数量多的话能够并发消费。

例子:num.partitions=50

default.replication.factor

default.replication.factor指的是自动建立主题的副本数量.默认是1,即只有一个主副本,至关于没有备份。建议改成大于等于2小于等于服务器数量的值。

例子: default.replication.factor=2

主题参数配置,Topic-Level Configs

主题的参数配置是写在生产者或者消费者的代码里的,一样是只提几个重要的。

cleanup.policy

cleanup.policy和服务器的log.cleanup.policy配置效果是同样的,只不过优先级高一些。

min.insync.replicas

min.insync.replicas指的是最小同步副本数量,默认是1个建议设为大于等于2,这样消息至少有一个副本。这里和生产者的acks配置有关,当acks设置为all的时候,消息须要复制到全部副本里才算成功,这里的全部副本数量不必定是固定的。好比一个主题有3个副本,其中一个副本由于同步进度太慢被踢出了isr(In-Sync Replicas),这时的全部副本其实只有2个(包括主副本),而不是3个。

例子: min.insync.replicas=2

分区数量和副本数量

Kafka是默认支持主题的自动建立的,默认的分区数量和副本数量配置已经在服务器配置里讲过了。固然也能够在spring等框架里配置,事实上主题的参数配置均可以在spring里配置,须要的能够去文档查询。

结尾

到这里Kafka的大部分业务无关的配置都已经搞定了,接下来就是写生产者和消费者了。以后还会写在spring boot里使用Kafka的笔记,到这里也只是简单的配置了Kafka,建议去阅读下《Kafka技术内幕:图文详解Kafka源码设计与实现》,这样才能更好的理解一些配置参数的意义和对Kafka的影响。

相关文章
相关标签/搜索