Kafka基础
Kafka是一个分布式的,基于分区存储的,多副本提交的日志系统。其特点包括:
高吞吐 无缝扩展 消息持久化 基本概念broker
broker是Kafka集群的一个节点,负责接收producer发来的消息和响应consumer发来的消息请求。
topic和partition
topic是Kafka组织消息的方式,可以认为是消息的类别。一个topic可以有多个partition来保存消息,消息在partition里是顺序存储的。这里注意,需要注意的是,Kafka保存数据是根据时间来决定的,而不是它是否被消费者消费。如果在数据的生命周期内,它被消费后仍然会存储在Kafka中。但如果它在生命周期内没有被消费,同样它也会在生命周期结束时被丢弃。
分布式
partition分布在所有的broker上。partition有leader和follower,partition的leader broker负责接收读写请求,而follower broker只负责从leader同步消息。当leader broker挂掉的时候,会通过Zookeeper的failover机制从follower中选举出新的leader。
producer
消息的生产者,producer根据topic的partition策略讲消息发给broker。
consumer
消息的消费者,Kafka在consumer之上引入了消费者组的概念,消费者会被被划分成一个个消费者组,属于某一个主题的消息会被分派到它的一个分区下,而该分区与订阅了该主题的消费组中的某一个消费者相对应,也就是说消息只会发送给订阅的消费者组中的一个消费者。可以把消费者组理解成消息的真正的订阅者,而它下面的消费者只是处理消息的线程池,这样做可以保证系统的扩展性和容错性。而消费者与分区的关系是,每个分区只能有一个消费者,这样保证了在这一分区中的所有消息都能按序处理。但不同分区中的消息处理顺序不能保证,如果要保证所有的数据都按序处理,可以使每个话题只有一个分区,每个消费者组只有一个消费者。
安装配置安装配置Java略过
下载解压Kafka
wget http://apache.fayea.com/kafka/0.10.0.0/kafka_2.11-0.10.0.0.tgz && tar xzf kafka_2.11-0.10.0.0.tgz
启动Zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties
启动Kafka broker
bin/kafka-server-start.sh config/server.properties
启动console producer
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
启动console consumer
bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning日常维护
topic管理
bin/kafka-topics.sh --zookeeper zk_host:port/chroot --create --topic my_topic_name --partitions 20 --replication-factor 3 --config x=y bin/kafka-topics.sh --zookeeper zk_host:port/chroot --create --topic my_topic_name --partitions 20 --replication-factor 3 --config x=y bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name --config x=y bin/kafka-topics.sh --zookeeper zk_host:port/chroot --alter --topic my_topic_name --delete-config x bin/kafka-topics.sh --zookeeper zk_host:port/chroot --delete --topic my_topic_name
均衡leader
bin/kafka-preferred-replica-election.sh --zookeeper zk_host:port/chroot
consumer group管理
bin/kafka-consumer-groups.sh --zookeeper localhost:2181 --list bin/kafka-consumer-groups.sh --zookeeper localhost:2181 --describe --group test-consumer-group bin/kafka-consumer-groups.sh --new-consumer --bootstrap-server broker1:9092 --list监控
consumer lag
consumer的当前offset和日志的最后位置的间隔
producer time
producer的响应时间
consumer time
consumer的响应时间
metadata time
metadata的更新时间
更多监控可参考 http://kafka.apache.org/documentation.html#monitoring
参考http://kafka.apache.org/documentation.html http://blog.csdn.net/yfkiss/article/details/17348693 http://blog.csdn.net/suifeng3051/article/details/48053965 http://blog.csdn.net/u013291394/article/details/50224491
文章来源:
Author:admin
link:http://xdays.me/kafka基础.html