
kafka的特点:
1.消息持久化:通过0(1)的磁盘数据结构提供数据的持久化,kafka中可以存储数据,存储量决定可以放多少数据,数据按照接受顺序发送给streaming,批量发送
2.高吞吐:每秒百万级的消息读写,消息来源广
3.分布式:强大的扩展能力
4.实时性:消费者可以即时看到生产者的message
组件:
1.broker:一台机器即一个broker,kafka一般拥有多个broker,
2.producer:消息的生产者,用来写日志的,接flume
3.consumer:日志的消费者,用来读数据的,接streaming、storm、flink等
4.topic:不同的消费者往不同的topic读数据,不同的生产者向不同的topic写数据
5.partition:topic的基础上做的进一步分层,一般命名方式为topic名字是“test”,partition名字为“test-0”、“test-1”,一个partition只对应一个consumer,一个consumer可以对应多个partition
6.zookeeper负载均衡:将topic分成多个区,每个broker存储一个或者多个partition
topic和log
topic是一个用于发布消息的分类和feed名,kafka使用分区的日志,每个分区有顺序且不变的消息队列
commit的log可以不断追加,消息在每个分区中都分配了一个叫offset的id序列,这个序列可以识别分区中的消息

可以在/kafka-consumer-offset-checker.sh中查看offset,在zookeeper中:get /consumers/group_test/offsets/中得到offset
数据持久化
topic中的partition对应一个逻辑日志,日志是相同大小的一组分段文件;producer发布消息到一个分区中,broker会将数据追加到最后一个段文件中,当接收的数据达到已经设定好最大值或者经过设定好的时间后,一段文件真正flush到磁盘中,写入完成后,消息再公开给消费者,这个消息通过offset来公开。
网友评论