1. 什么是Kafka代理(Broker)?
Kafka代理也称为Kafka服务器和Kafka节点。它负责调解不同计算机系统之间的对话,保证将消息正确的传递给各方。
Kafka集群通常由多个代理组成,集群使用Zookeeper来维护状态。单个代理每秒可以处理数千次读写操作,如果性能不受影响,每个代理都可以处理TB级的消息。另外, ZooKeeper会执行代理领导者选举。
pic
Kafka的代理被建模为KafkaServer实例,它是主题的宿主。主题总是在很多代理上进行分区,在集群中,一个代理实际上托管一个或多个主题的分区,即使一个主题只有一个分区也是如此。
生产者可以根据代理存储消息的偏移量想代理发送消息,而消费者通过传入主题、分区、偏移量来读取消息。多个代理可以通过Zookeeper直接或间接的共享信息来组成Kafka集群,一个集群只能有一个代理作为控制器。通过运行kafka-server-start.sh脚本,我们可以启动一个Kafka代理。
2. 怎么启动Kafka代理?
-
首先启动Zookeeper
./bin/zookeeper-server-start.sh config/zookeeper.properties
-
然后启动Kafka代理(只有Zookeeper在运行状态下才行,因为Kafka代理需要连接Zookeeper)
./bin/kafka-server-start.sh config/server.properties
kafka-server-start.sh默认使用config/log4j.properties来设置日志的配置,我们可以使用KAFKA_LOG4J_OPTS环境变量覆盖的配置,例如:
KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:config/log4j.properties"
kafka-server-start.sh 脚本还接受KAFKA_HEAP_OPTS 和EXTRA_ARGS环境变量。
3. Kafka命令行选项
-name
在守护进程模式下默认为kafkaServer。
-loggc
在守护进程模式下启用。
–override property=value
传入的值会覆盖server.properties文件中为property设置的值。例如:
$ ./bin/kafka-server-start.sh config/server.properties --override broker.id=100 ... INFO [KafkaServer id=100] started (kafka.server.KafkaServer)