1.消息队列模式
点对点模式:每条消息对应一个消费者,被消费之后,消息就不存在了;
发布订阅模式:一条消息可以被多个消费者消费,被消费之后,消息不会删除;
2.构成:
consumer;consumer group;producer;
broker;
topic;partition;replica(leader,follower);
3.命令
启动:
./kafka-server-start.sh
关闭:
./kafka-server-stop.sh
主题相关:
查看所有主题:./kafka-topics --zookeeper xxx --list
创建主题:./kafka-topics --zookeeper xxx --create --topic xxx --partition x --replica x
删除主题:./kafka-topics --zookeeper xxx --delete --topic xxx
修改主题:./kafka-topics --zookeeper xxx --alter --topic xxx
查看详细信息:./kafka-topics --zookeeper xxx --describe --topic xxx
4.可靠性
producer每次发送消息到broker中的topic后,会等待broker返回一个ack,收到ack之后才会继续后续的信息发送,否则会重新发送该条消息。
5.同步策略
kafka维护了一个ISR,里面包含了若干个follower,然后leader中的消息同步也是只针对该集合中的follower。
acks:0 producer 发送消息后,不等broker回复ack直接继续发送消息
acks:1 producer 发送消息后,kafka等待leader成功写入,就返回ack
acks:-1(all) producer 发送消息后,需要ISR中所有的follower都同步写入成功,broker才返回ack
6.at least once;at most once;at exactly once (<PID, Partion ID, Record ID>);
7.round-robin; range
8.版本0.11 之前,消费者端的offset存储在zookeeper中,之后的版本存储在broker的一个内置topic中,所以,后续连接中,consumer直接和broker通信,不再需要知道zookeeper(当然,如果想用zookeeper的话,还是可以用zookeeper)
9.kafka producer API; kafka consumer API;
10.kafka eagle 监控