本站提供互联网编程技术交流分享,部分技术教程不断更新中,请随时关注或联系我寻求帮助 ,同时也欢迎有兴趣的朋友进行投稿。

面试问Kafka的相关知识,这一篇就能全搞定

大数据 熊哥club 148℃ 0评论
面试问Kafka的相关知识,这一篇就能全搞定

Kafka 基础

消息系统的作用
大部分小伙伴应该都清楚,这里用机油装箱举个例子:

面试问Kafka的相关知识,这一篇就能全搞定

所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实现解耦合的作用。

引入一个场景,我们知道中国移动,中国联通,中国电信的日志处理,是交给外包去做大数据分析的,假设现在它们的日志都交给了你做的系统去做用户画像分析。
面试问Kafka的相关知识,这一篇就能全搞定

按照刚刚前面提到的消息系统的作用,我们知道了消息系统其实就是一个模拟缓存,且仅仅是起到了缓存的作用而并不是真正的缓存,数据仍然是存储在磁盘上面而不是内存。

Topic 主题
Kafka 学习了数据库里面的设计,在里面设计了 Topic(主题),这个东西类似于关系型数据库的表:
面试问Kafka的相关知识,这一篇就能全搞定

此时我需要获取中国移动的数据,那就直接监听 TopicA 即可。

Partition 分区

Kafka 还有一个概念叫 Partition(分区),分区具体在服务器上面表现起初就是一个目录。

一个主题下面有多个分区,这些分区会存储到不同的服务器上面,或者说,其实就是在不同的主机上建了不同的目录。

这些分区主要的信息就存在了 .log 文件里面。跟数据库里面的分区差不多,是为了提高性能。
面试问Kafka的相关知识,这一篇就能全搞定

至于为什么提高了性能,很简单,多个分区多个线程,多个线程并行处理肯定会比单线程好得多。

Topic 和 Partition 像是 HBase 里的 Table 和 Region 的概念,Table 只是一个逻辑上的概念,真正存储数据的是 Region。

这些 Region 会分布式地存储在各个服务器上面,对应于 Kafka,也是一样,Topic 也是逻辑概念,而 Partition 就是分布式存储单元。

这个设计是保证了海量数据处理的基础。我们可以对比一下,如果 HDFS 没有 Block 的设计,一个 100T 的文件也只能单独放在一个服务器上面,那就直接占满整个服务器了,引入 Block 后,大文件可以分散存储在不同的服务器上。

注意:

  • 分区会有单点故障问题,所以我们会为每个分区设置副本数。
  • 分区的编号是从 0 开始的。
Producer 生产者
往消息系统里面发送数据的就是生产者:
面试问Kafka的相关知识,这一篇就能全搞定
Consumer 消费者
从 Kafka 里读取数据的就是消费者:
面试问Kafka的相关知识,这一篇就能全搞定
Message 消息

Kafka 里面的我们处理的数据叫做消息。

Kafka 的集群架构

创建一个 TopicA 的主题,3 个分区分别存储在不同的服务器,也就是 Broker 下面。

Topic 是一个逻辑上的概念,并不能直接在图中把 Topic 的相关单元画出:
面试问Kafka的相关知识,这一篇就能全搞定

需要注意:Kafka 在 0.8 版本以前是没有副本机制的,所以在面对服务器宕机的突发情况时会丢失数据,所以尽量避免使用这个版本之前的 Kafka。

Replica 副本

Kafka 中的 Partition 为了保证数据安全,所以每个 Partition 可以设置多个副本。

此时我们对分区 0,1,2 分别设置 3 个副本(其实设置两个副本是比较合适的):
面试问Kafka的相关知识,这一篇就能全搞定

而且其实每个副本都是有角色之分的,它们会选取一个副本作为 Leader,而其余的作为 Follower。

本文地址: https://www.xiongge.club/1462.html

转载请注明:熊哥club面试问Kafka的相关知识,这一篇就能全搞定

©熊哥club,本站推荐使用的主机:阿里云,CDN建议使用七牛云


关注微信公众号『熊哥club』

免费提供IT技术指导交流
  关注博主不迷路~

喜欢 (1)
[您的支持是我最大的动力]
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮