支持多个生产者,分布式系统中往往有多个微服务向一个kafka集群发送消息;
支持多个消费者从一个Kafka集群中消费消息,可以通过消费者组实现多个消费者同时协作消费消息。
允许消费者非实时读取消息
高吞吐率的实现
1) 顺序读写
2) 零拷贝
1.1 基本术语 1.1.1 Partition分区。topic中的消息被分割为一个或多个partition,其是一个物理概念,对应到系统上就是一个或若干个目录。
partition的数量设置为broker数量的整数倍。
一个partition在kafka上就是一个目录,目录名称为:[topicName]-[partitionNo]
一个partition可以被在不同消费者组的消费者同时消费。
多个partition也可以被同一个消费者消费。
1.1.2 segment段。将partition进一步细分为了若干的segment,每个segment文件的最大大小相等。
segment是一个逻辑概念,其由两类物理文件组成,分别为“.index”文件和“.log”文件。“.log”文件中存放的是消息,而“.index”文件中存放的是“.log”文件中消息的索引。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uTxFzLkC-1641959484486)(C:UsersEllen LiuAppDataRoamingTyporatypora-user-imagesimage-2022010218



