文章目录[隐藏]
Kafka 基础
所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实现解耦合的作用。
按照刚刚前面提到的消息系统的作用,我们知道了消息系统其实就是一个模拟缓存,且仅仅是起到了缓存的作用而并不是真正的缓存,数据仍然是存储在磁盘上面而不是内存。
此时我需要获取中国移动的数据,那就直接监听 TopicA 即可。
Kafka 还有一个概念叫 Partition(分区),分区具体在服务器上面表现起初就是一个目录。
一个主题下面有多个分区,这些分区会存储到不同的服务器上面,或者说,其实就是在不同的主机上建了不同的目录。
至于为什么提高了性能,很简单,多个分区多个线程,多个线程并行处理肯定会比单线程好得多。
Topic 和 Partition 像是 HBase 里的 Table 和 Region 的概念,Table 只是一个逻辑上的概念,真正存储数据的是 Region。
这些 Region 会分布式地存储在各个服务器上面,对应于 Kafka,也是一样,Topic 也是逻辑概念,而 Partition 就是分布式存储单元。
这个设计是保证了海量数据处理的基础。我们可以对比一下,如果 HDFS 没有 Block 的设计,一个 100T 的文件也只能单独放在一个服务器上面,那就直接占满整个服务器了,引入 Block 后,大文件可以分散存储在不同的服务器上。
注意:
- 分区会有单点故障问题,所以我们会为每个分区设置副本数。
- 分区的编号是从 0 开始的。
Kafka 里面的我们处理的数据叫做消息。
Kafka 的集群架构
创建一个 TopicA 的主题,3 个分区分别存储在不同的服务器,也就是 Broker 下面。
需要注意:Kafka 在 0.8 版本以前是没有副本机制的,所以在面对服务器宕机的突发情况时会丢失数据,所以尽量避免使用这个版本之前的 Kafka。
Kafka 中的 Partition 为了保证数据安全,所以每个 Partition 可以设置多个副本。
而且其实每个副本都是有角色之分的,它们会选取一个副本作为 Leader,而其余的作为 Follower。
本文地址: https://www.xiongge.club/biancheng/elk/1462.html
转载请注明:熊哥club → 面试问Kafka的相关知识,这一篇就能全搞定
©熊哥club,本站推荐使用的主机:阿里云,CDN建议使用七牛云。
关注微信公众号『熊哥club』
免费提供IT技术指导交流
关注博主不迷路~