Kafka以Topic为期间单位组织消息。各个Topic之间相互独立,互不影响。日志
每一个Topic是由一个或多个分区组成,分区数能够在建立Topic时指定,或者在Topic建立以后修改。对象
能够用bin/kafka-topics.sh来修改某个Topic的分区数,但只能增长分区数,不能减小分区数。索引
每一个分区有一个或多个replica。中文名称为“副本”。副本是对数据冗余的一种操做,减小数据loss的风险。kafka
若是有多个副本,会从中选举一个做为leader副本,其他的做为follower副本。同步
只有leader副本用做与客户端的读写操做。follower副本只负责从leader副本同步数据。im
每一个Replica在逻辑上对应一个Log对象,每一个Log对象又划分为多个LogSegment对象。每一个LogSegment包括一个日志文件和一个offset索引文件,一个time索引文件。数据