先下载
http://kafka.apache.org/downloads
kafka cluster: kafka集群,一台或多 台服务器组成 Broker: Broker是指部署了Kafka实例的服务器节点。每个服务器.上有-个或多个kafka的实 例,我们姑且认为每个broker对应一台服务器。每个kafka集群内的broker都有 -个不重复的 编号,如图中的broker-0、broker-1等..... Topic: 消息的主题,可以理解为消息的分类,kafka的数据就保存在topic。 在每个broker.上 都可以创建多个topic。实际应用中通常是一个业务线建一 个topic。 Partition: Topic的分区, 每个topic可以有多个分区,分区的作用是做负载,提高kafka的吞 吐量。同一个topic在不同的分区的数据是不重复的,partition的表现形式就是一个一 个的文 件夹! Replication:每一 个分区都有多个副本,副本的作用是做备胎。当主分区(Leader) 故障的 时候会选择一个备胎(Follower). 上位, 成为Leader。 在kafka中默认副本的最大数量是10 个,且副本的数量不能大于Broker的数量, follower和leader绝对是 在不同的机器,同一机 器对同一个分区也只可能存放一个副本(包括自己)。 1. Kafka集群的架构 1. broker 2. topic 3. partition:分区,把同一个topic分成不同的分区,提高负载 1. leader:分区的主节点(老大) 2. follower:分区的从节点(小弟) 4. Consumer Group
生产者往Kafka发送数据的流程(6步)
1.生产者从Kafka集群获取分区leader信息
2.生产者将消息发送给leader
3. leader将消息写入本地磁盘
4. follower从leader拉 取消息数据
5. follower将消息写入本地磁盘后向leader发送ACK
6. leader收到所有的follower的ACK之后向生产者发送ACK
3. Kafka选择分区的模式(3种) 1.指定往哪个分区写 2.指定key, kafka根据key做hash然后决定写哪个分区 3.轮询方式 4.生产者往kafka发送数据的模式(3种) 1.0:把数据发给leader就成功, 效率最高、安全性最低。 2.1: 把数据发送给leader,等待leader回ACK 3. a11 :把数据发给leader确保follower从leader拉取数据回复ack给leader, leader再回复ACK; 安全性最 高
每个partition都是一个有序并且不可变的消 息记录集合。当新的数据写入时,就被追加到partition的末 尾。在每个partition中,每条消息都会被分配一个顺序的唯一 标识, 这个标识被称为offset,即偏移 量。注意,Kafka只保证在同一个partition内部消息是有序的,在不同partition之间, 并不能保证消息 有序。 Kafka可以配置一个保留期限,用来标识日志会在Kafka集群内保留多长时间。Kafka集群会保留在保留 期限内所有被发布的消息,不管这些消息是否被消费过。比如保留期限设置为两天,那么数据被发布到 Kafka集群的两天以内,所有的这些数据都可以被消费。当超过两天,这些数据将会被清空,以便为后 续的数据腾出空间。由于Kafka会将数据进行持久化存储(即写入到硬盘上),所以保留的数据大小可 以设置为一个比较大的值。 Partition结构 Partition在服务器上的表现形式就是一个一个的文件夹,每个partition的文件夹 下面会有多组segment 文件,每组segment文件又包含.index文件、( . 1og文件、| . timeindex文件三个文件,其中.1og文 件就是实际存储message的地方,而. index和. timeindex文件为索引文件,用于检索消息。 消费数据 多个消费者实例可以组成一-介消费者组,并用一个标签来标识这个消费者组。一个消费者组中的不同消 费者实例可以运行在不同的进程甚至不同的服务器上。 如果所有的消费者实例都在同一个消费者组中,那么消息记录会被很好的均衡的发送到每个消费者实 例。 如果所有的消费者实例都在不同的消费者组,那么每一条消息记录会被广播到每-一个消 费者实例。
原文:https://www.cnblogs.com/The-Meaning-of-Life111/p/12700901.html