kafka的基本知识(面试备用)

一.概述

1.1 概述

Kafka是一个分布式的消息订阅系统,消息被持久化到一个topic中,topic是按照“主题名-分区”存储的,一个topic可以分为多个partition,在parition(分区)内的每条消息都有一个有序的id号,这个id号被称为偏移(offset),记录消息的消息位置。

作用就是:应用解耦,异步传输,消息通信、并行。Mq支持事务(传统的),kafka不支持事务。

队列具有:先进先出的特性!

1.2 kafka的组件以及作用

1.producer:消息的生产者,主要是用于生产消息的。通过push的方式,主动的将数据推送到kafka的topic当中去。可以通过flume,ftp,Javaapi等方式获取数据。

2.topic:主题,存储抽象信息的集合,可以分为多个分区。

3.partition:消息的分区,paritition保存了一部分topic的数据,一个partition包含多个segement一个segement又包含两部分.log文件和.index文件

segement:包含两个文件.log 文件和.index文件

.log:记录了我们的数据文件是顺序读写的

.index文件:记录了.log文件的索引

4.offset:消息的偏移量,记录上一次消息消费的位置。

5.broker:在kafka当中存储消息的服务器。kafka的服务器,kafka集群中包含一个或者多个服务实例一个broker就是一台机器,这种服务实例被称为Broker

6.consumer:消息的消费者,主要去消费topic当中的数据的,主动会去pull拉取topic当中的消息

7.Consumer:消息消费者,从kafka的broker中读取消息的客户端消息的消费者,从topic当中消费消息

8.Consumer Group:每一个Consumer属于一个特定的Consumer Group(可以为每个Consumer指定 groupName)

9.zookeeper:为了解决消费者消费的时候,确定一个topic当中有多少个分区,分区分别都在哪一台机器上,引入zk来保存这些数据。

1.3 kafka的消费模型关系

kakfa的消费模型,在kakfa当中消费有组的概念:同一时间,一个组当中,只能有一个线程去消费一个paritition当中的数据

1.一个top可以有多个分区,每个分区通过offset,记录消费的位置

2.同一时间,一个分区只能被同一个group里面的其中一个消费者进行消费,一个消费者可以消费多个分区。

3.分区内的数据是顺序的,每个分区内的数据采用的都是顺序读写。

4.如果group中的消费者数量大于分区数量的话,多余的消费者将不会收到任何消息。

5.如果group中的消费者数量等于分区的数量的话,一切都刚刚好。

6.如果group中的消费者数量小于分区的数量的话,则存在有的消费者要消费多个分区的情况。

所以消费者数量一定要小于等于分区的数量。

7.不同分区的消费没有顺序,同一分区里面的数据,是按照顺序消费的。

8.如果消费速度太慢,更改topic的分区数,加多个分区,就会有多个线程来消费,就会比较快。

kafka的分区数与多线程消费_siantbaicn的博客-CSDN博客_kafka 多线程消费单个partition

kafka实战 - 嘿123 - 博客园

深入了解Kafka【五】Partition和消费者的关系 - clawhub - 博客园

1.4 kafka的分区策略

kafka的数据生产出来之后究竟落到了哪一个分区里面去了

第一种分区策略:给定了分区号,直接将数据发送到指定的分区里面去

第二种分区策略:没有给定分区号,通过key的hashcode,和 topic的分区数,进行取模。

第三种分区策略:既没有给定分区号,也没有给定key值,直接轮循进行分区

第四种分区策略:自定义分区

1.5 kafka为何读取数据快

1.数据的顺序读写 2.页缓存

1.6 kafka的消息确认机制

Ack的确认机制:

1表示partition的leader已经确认消息保存好了。

0表示partition的leader没有任何确认反馈机制,不安全。

-1:需要leader与follower都确认保存好了才会发送下一条信息。

发送一条消息确认一条消息,这种模式叫做同步模式,发送一批,确认一批,接着发送下一批,叫做异步模式。

1.7 kafka异步模式下,如何控制数据的发送策略

1.时间长短,2.数据条数

1.8 kafka如何保证可靠性数据不丢失

1.生产者:使用ACK确认机制,设置为-1,即在分区中的leader和follower都确认保存好了才返回相应,接着下一条的生产;同时发送模式设置producer.type=sync(同步)

2.broker:使用了分区副本机制对数据的备份;关闭不完全的leader选举,即unclean.leader.election.enable=false。

3.消费者:使用offset防止数据被重复消费,如果kafka集群挂掉之后,重新启动,重新读取上次记录的offset值,接着下一条消费即可。设置enable.auto.commit=false时由于是手动提交的,可以处理一条提交一条,也可以处理一批,提交一批。

1.9 kafka的push与pull操作

Kafka架构是一种异构的设计模式,即生产者只管向集群中push推送数据,消费者只管从集群pull拉取数据。消费者通过pull主动拉取的方式从kafka集群中主动获取数据,不同于以往的消息队列,被动的去接受数据。

1.10 kafka的消费的3要素(了解)

第一个条件:确定哪一个topic

第二个条件:必须知道zk的地址

第三个条件:消息消费的offset偏移量

1.11 kafak的集群图

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值