APP下载

Java程序员面试必备——kafka的专业术语

消息来源:baojiabao.com 作者: 发布时间:2024-05-10

报价宝综合消息Java程序员面试必备——kafka的专业术语

主题 + 客户端

1. 释出订阅的物件是主题(Topic)

2. 向主题释出讯息的客户端应用程序称为生产者(Producer),生产者可以持续不断地向多个主题传送讯息

3. 订阅这些主题讯息的客户端应用程序称为消费者(Consumer),消费者能够同时订阅多个主题的讯息

4.生产者和消费者统称为客户端

服务端

1. Kafka的服务端由被称为Broker服务程序构成,一个Kafka丛集由多个Broker组成

2. Broker负责接收和处理客户端传送过来的请求,以及对讯息进行持久化

3. 多个Broker程序能够执行在同一台机器上,但更常见的做法是将不同的Broker分散执行在不同的机器

这样如果丛集中某一台机器宕机了,即使在它上面执行的所有Broker程序都挂掉了其他机器上的Broker也依然能够对外提供服务,这是Kafka提供高可用的手段之一

备份

1. 实现高可用的另一个手段是备份机制(Replication)

2. 备份:把相同的资料拷贝到多台机器上,这些相同的资料拷贝在Kafka中被称为副本(Replica)

3. 副本的数量是可以配置的,Kafka定义了两类副本:领导者副本(Leader Replica)和追随者副本(Follower Replica)

领导者副本:对外提供服务,对外指的是与客户端程式进行互动生产者总是向领导者副本写讯息消费者总是从领导者副本读讯息追随者副本:被动地追随领导者副本,不能与外界互动向领导者副本传送请求,请求领导者副本把最新生产的讯息发给它,进而与领导者副本保持同步MySQL的从库是可以处理读请求的Master-Slave => Leader-Follower4. 副本机制可以保证资料的持久化或者讯息不丢失,但没有解决伸缩性(Scalability)的问题

如果领导者副本积累了太多的资料以至于单台Broker机器无法容纳,该如何处理?可以把资料分割成多份,然后储存在不同的Broker上,这种机制就是分割槽(Partitioning)MongoDB、Elasticsearch – ShardingHBase – Region

分割槽

1. Kafka中的分割槽机制是将每个主题划分成多个分割槽(Partition),每个分割槽是一组有序的讯息日志

2. 生产者生产的每条讯息只会被发送到一个分割槽中,Kafka的分割槽编号是从0开始的

3. 副本是在分割槽这个层级定义的,每个分割槽下可以配置N个副本,只能有1个领导者副本和N-1个追随者副本

4. 生产者向分割槽(分割槽的领导者副本)写入讯息,每条讯息在分割槽中的位置由位移(Offset)来表征,而分割槽位移总是从0开始

5. 三层讯息架构

第一层是主题层,每个主题可以配置M个分割槽,而每个分割槽又可以配置N个副本第二层是分割槽层每个分割槽的N个副本中只能有1个领导者副本,对外提供服务其他N-1个副本是追随者副本,只能提供资料冗余第三层是讯息层,分割槽中包含若干条讯息,每条讯息的位移从0开始,依次递增最后,客户端程式只能与分割槽的领导者副本进行互动

持久化

1. Kafka使用讯息日志(Log)来储存资料,一个日志是磁盘上一个只能追加写(Append-Only)讯息的物理档案

只能追加写入,避免了缓慢的随机IO操作,改为效能较好的顺序IO操作,这是实现Kafka高吞吐量的一个重要手段2. Kafka需要定期删除讯息以回收磁盘空间,可以通过日志片段(Log Segment)机制来实现

在Kafka底层,一个日志又被细分成多个日志段,讯息被追加到当前最新的日志段中当写满一个日志段后,Kafka会自动切分出一个新的日志段,并将老的日志段封存起来Kafka在后台有定时任务定期地检查这些老的日志段是否能够被删除,从而实现回收磁盘空间的目的

消费者

1. 点对点模型(Peer to Peer,P2P):同一条讯息只能被下游的一个消费者消费,其他消费者不能染指

2. Kafka通过消费者组(Consumer Group)来实现P2P模型

消费者组:多个消费者例项共同组成一个组来消费一组主题这组主题中的每个分割槽都只会被组内的一个消费者例项消费,其他消费者例项不能消费它即消费者对分割槽有所有权3. 引入消费者组的目的:提高消费者端的吞吐量(TPS)

4. 消费者例项(Consumer Instance):即可以是执行消费者应用的程序,也可以是一个执行绪

5. 重平衡(Rebalance)

若组内的某个例项挂了,Kafka能够自动检测到,然后把这个挂掉的例项之前负责的分割槽转移给组内其他存活的消费者重平衡引发的消费者问题很多,目前很多重平衡的Bug社群都无力解决6. 消费者位移(Consumer Offset):记录消费者当前消费到了分割槽的哪个位置,随时变化

分割槽位移:表征的是讯息在分割槽内的位置,一旦讯息被成功写入到一个分割槽上,讯息的分割槽位移就固定

小结

1. 讯息(Record):讯息是Kafka处理的主要物件

2. 主题(Topic):主题是承载讯息的逻辑容器,实际使用中多用来区分具体的业务

3. 分割槽(Partition):一个有序不变的讯息序列,每个主题下有多个分割槽

4. 讯息位移(Offset):也叫分割槽位移,表示一条讯息在分割槽中的位置,是一个单调递增且不变的值

5. 副本(Replica)

Kafka中同一条讯息能够被拷贝到多个地方以提供资料冗余副本分为领导者副本和追随者副本,副本在分割槽的层级下,每个分割槽可配置多个副本实现高可用6. 生产者(Producer):向主题释出讯息的应用程序

7. 消费者(Consumer):从主题订阅讯息的应用程序

8. 消费者位移(Consumer Offset):表征消费者的消费进度,每个消费者都有自己的消费者位移

9. 消费者组(Consumer Group):多个消费者例项共同组成一个组,同时消费多个分割槽以实现高吞吐

10. 重平衡(Rebalance)

消费者组内某个消费者例项挂掉后,其他消费者例项自动重新分配订阅分割槽的过程重平衡是Kafka消费者端实现高可用的重要手段

写在最后

第一:看完点赞,感谢您的认可;...第二:随手转发,分享知识,让更多人学习到;...第三:记得点关注,每天更新的!!!...
2019-08-15 06:48:00

相关文章