yangyutong00 2020-02-21
kafka 分布式,基于zookeeper协调的分布式消息系统,支持分区(partition)多副本(replica)
每秒10万的吞吐量,零拷贝,不经过内存
端口默认9092
1、消费者 producer
自己决定向哪个partition生产消息,两种机制:hash,轮询
2、partiton 分区
一个topic分成多个partition
每个partition内部消息强有序,其中每个消息都有一个序号叫offset
一个partition 只对应一个broker,一个broker可以管多个partition
消息直接写入文件,并不是存储在内容中
根据时间策略(默认一周)删除,而不是消费完就删除
consumer一次只能从一个分区 partition读消息
每个partition中的消息是强有序的
但是多个consumer 并发从partiton读消息不是整体消息有序的
partition 可已有副本
3、消费者 consumer
consumer自己维护消费到那个offset
每个consumer都有对应的group
同一个组内的consumer只能消费不同的partition,不能共同消费一个partition(除非这个consumer掉了),但是不同组内可以,一个消息在group内只能消费一次
4、topic
一类消息总成(一个消息队列)
5、broker kafka集群节点,没有主从关系,通过zookeeper管理,broker负责消息的读写和存储
一个broker可以管理多个partition
创建消息
kafka-topics.sh --zookeeper node3:2181,node4,node5 --create --topic t001 --partitions 3 --replication-factor 3