Kafka 基本概念及术语介绍​

学习Kafka的基础概念之前,先简单了解一下消息队列的概念。

消息队列

消息队列,我们一般简称为MQ(Message Queue) 队列是我们常说的一种先进先出的数据结构。消息队列可以简单理解为:把要传输的数据放在队列中。

科普

    把数据放到消息队列叫做生产者

    从消息队列里边取数据叫做消费者

消息队列的两种模式:                            

1.点对点:生产者生产消息发送到队列中,消费者从队列中取出并且消费消息。消息被消费以后,队列中不再有存储,所以消费者不可能消费到已经被消费的消息。队列支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。

2.发布/订阅:生产者将消息发布到topic中,同时有多个消费者订阅该消息。和点对点方式不同,只要消费者订阅了这个topic,发布到topic的消息会被所有订阅了该topic的消费者消费。

两者之间最大的不同是:点对点模式中一旦数据被消费了,就会从队列中移除,但是发布/订阅模式不会。

Kafka就是基于发布/订阅模式的分布式消息系统与其它的消息队列对比,kafka最大的特点就是它的高吞吐量(存的多,读取的快)

Kafka应用场景

我们既然学习Kafka,那它可以用于哪些地方呢?嘿嘿,找了两个图例说明

1.日志处理

2.限量削峰

 

Kafka的基本术语

Producer(生产者):是消息产生的源头,负责生成消息并发送到Kafka服务器上。

Consumer(消费者):是消息的使用方,负责消费Kafka服务器上的消息。

broker(kafka集群服务器):是Kafka的服务器,用来存储消息

Zookeeper集群:kafka是基于zookeeper的,所以需要先搭建一个zookeeper集群,在zookeeper中存储的信息有broker,consumer等重要znode信息。

TOPIC (主题): 是逻辑上的概念,生产者生产的消息可以按类别分为多个主题。消费者按主题订阅,消费自己订阅的主题下的数据。 

partition(分区):是物理上的概念,对于一个topic,kafka维护一个或多个分区。关于分区,还有一个replicas(副本)的概念,顾名思义就是copy版本,防止分区挂掉了,数据丢失。其中一个副本为leader,其他都为follower。leader处理分区的所有读写工作,follower会定期同步leader上的数据,如果leader挂掉了,kafka会从follower中选举出新的leader。

group ID(消费者组):在kafka中,我们可以认为一个group就是一个订阅者,一个消费者只能属于一个消费者组。一个topic中的一个分区,只会被一个group中的一个消费者消费。对于一个topic,同一个group不允许有多于分区个数的消费者同时消费,这意味着有些消费者无法消费到数据。

offset(偏移量): 分为生产者的offset和消费者的offset。

生产者offset:不管是多少个生产者,还是我们规定了他们会写入哪一个分区,但只要他们写入的时候,一定是每一个分区都有一个offset,这个offset就是生产者的offset,同时也是这个分区的最新最大的offset。

消费者offset:某一个分区的offset情况,我们已经知道生产者写入的offset是最新最大的值也就是12,而当Consumer A进行消费时,他从0开始消费,一直消费到了9,他的offset就记录在了9,Consumer B就记录在了11。等下一次他们再来消费时,他们可以选择接着上一次的位置消费,当然也可以选择从头消费,或者跳到最近的记录并从“现在”开始消费。消费者的offset是他自己维护的,他可以选择分区最开始,最新,也可以记住他消费到哪了

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值