1.点对点模式:消费者主动拉取消息,消费之后删除数据。
2.发布/订阅模式:如果生产者推给消费者,可能会有些消费者消费比较慢,直接爆炸、或者有些消费者消费很快,资源浪费;一般是消费者主动拉取(但是这样要不停的去询问kafka是否有新消息)。
Kafka基本架构
1.生产者:生产消息给kafka集群。
2.kafka集群:消息队列,暂存消息。
borker可以任务是不同的服务器;
Topic是指主题,每个主题存不同类型的消息;
partition是指分区,分区的作用在于,负载均衡,提高并发率(竖看是分区);
leader是相对于分区而言的,并不是相对于broker,而follower是在其中的leader宕机时会被提升为leader,作为副本(leader与follower一定不在一台服务器);
3.消费者:拉取kafka中的消息,消费,存储数据等。
消费者组:一个分区同时只能被一个消费者组的一个消费者消费
4.zookper:帮助kafka集群存储一些信息,纪录消费者消费到了哪里(0.9版本之前存在zk中,0.9版本之后存又存在了kafka的一个系统的Topic中,之所以改回去,是因为消费者既要维护与kafka的链接,又要维护与ZK的链接比较浪费资源,另外ZK本身只是各个框架整合的润滑剂,让它高并发并不好)。
kafka的配置文件
1.server.properties
broker.id:这是borker的全局唯一ID,不可重复,写整数;
delete.topic.enable:默认是false,一般会改为true,意思是是否允许真的删除topic;
log.dirs:kafka运行日志存放的地址(其实可以认为是数据暂存的地方);
log.retention.hours:这是kafka存放运行时日志的最长时间;
zookeeper.connect:配置连接zookper的地址
2.在bin目录下有一些常用的命令
kafka-topics.sh --list --zookeeper:端口号 列出所有的topic
kafka-topics.sh --create --zookeeper :端口号 --partitions 指定分区数 --replication-factor 指定副本数 创建一个topic
kafka-topics.sh --delete --zookeeper:端口号 --topic 主题名称 删除指定主题(此时要注意配置文件为true时才真正意义的删除)
副本数,不能大于borker的数量
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic events --from-beginning --topic events是指订阅某一个topic的消息。 --from-begining是指从这个topic的第一条消息开始消费