kafka自学笔记(一)

11月19日

先祭出原创的博客:https://blog.csdn.net/liyiming2017/article/details/82805479

1.一些概念:

a.kafka是一个分布式流处理平台,特性如下:

(1)可以让你分布和订阅流式信息。

(2)可以存储流式信息。

(3)可以再流式信息产生时就进行处理。

2.构成:

Producer:生产者 

Brouker:代理,由一个leader代理和若干follower代理组成kafka集群。

                leader代理负责与外部的通讯。

                当leader代理死掉后,follower代理们会通过选举,选出新的leader。

Consumer:消费者,若干个消费者组成ConsumerGroup(消费群组)。

                    同一个组里的消费者可以并行消费同一个topic(主题)的消息。

                    若同一个主题需要被多次消费,可以设立多个消费群组来实现。

topic:主题,消息分类箱。生产者往里丢,消费者取走(消息订阅和发送都是基于某个topic)。

Kafka核心概念简介

a.分区:把topic分成若干个小队列。

             每个分区都是有序且顺序不可变的记录集。

             分区中的每一个记录都回分配一个id号来表示顺序。这个id叫offset,offset用来唯一标识分区中的每一条记录。


 

无分区时,一个topic只能一个消费者消费。

有分区时,有几个分区可以几个消费者同时消费。(n=n)

分区设计提升了kafka的吞吐量。

1.一个分区只能被同组的一个消费者消费。

2.同组的一个消费者可以消费多个分区。

3.消费效率最高的情况是:分区数=消费者数。

4.消费者数不能大于分区数。

5.消费者群可以认为是一个订阅者集群,其中每个消费者负责自己所消费的分区。

b.副本:每个分区的数据有多份副本,以此来保证kafka的高可用。

             活跃的一个称为leader,其他的为follower。

1.topic下会划分多个分区,每个分区都有自己的副本,其中只有一个是leader副本,其他未follower副本。

2.消息进来时,会先存到leader副本里,然后再从leader副本复制到follower副本。只有复制全部完成时,消费者才可以消费此条消息。消费者的消费也是从leader副本里读取的。

3.若不同的分区的leader副本再kafka集群的代理上分布不均,就会造成负载不均衡。

而kafka通过轮算法保证leader副本时均匀分布在多个代理上。

轮询算法:把来自用户的请求轮流分配给内部的服务器,从服务器1开始,直到服务器N,然后重新开始循环。

猜你喜欢

转载自blog.csdn.net/qq_35371909/article/details/84101141