今天这篇用大白话带你认识 Kafka!
![6409ebdd00d98cbcfea6786510b30345.png](https://i-blog.csdnimg.cn/blog_migrate/e0aa69ba6212db7f41b62415adb91911.jpeg)
图片来自 Pexels
Kafka 基础
消息系统的作用
大部分小伙伴应该都清楚,这里用机油装箱举个例子:所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实现解耦合的作用。
引入一个场景,我们知道中国移动,中国联通,中国电信的日志处理,是交给外包去做大数据分析的,假设现在它们的日志都交给了你做的系统去做用户画像分析。![7bbbacab955d2fc8243decc27b46b2b0.png](https://i-blog.csdnimg.cn/blog_migrate/0647deeb256d9177db7af09ee218fcde.png)
按照刚刚前面提到的消息系统的作用,我们知道了消息系统其实就是一个模拟缓存,且仅仅是起到了缓存的作用而并不是真正的缓存,数据仍然是存储在磁盘上面而不是内存。
Topic 主题
Kafka 学习了数据库里面的设计,在里面设计了 Topic(主题),这个东西类似于关系型数据库的表:![a6f122d6b70db479c60ba8421b597d78.png](https://i-blog.csdnimg.cn/blog_migrate/60f9792fc11fc5631f2dcbc89fec939e.png)
此时我需要获取中国移动的数据,那就直接监听 TopicA 即可。
Partition 分区
Kafka 还有一个概念叫 Partition(分区),分区具体在服务器上面表现起初就是一个目录。
一个主题下面有多个分区,这些分区会存储到不同的服务器上面,或者说,其实就是在不同的主机上建了不同的目录。
这些分区主要的信息就存在了 .log 文件里面。跟数据库里面的分区差不多,是为了提高性能。![8dc57ed493a8243f64a02618555b2be7.png](https://i-blog.csdnimg.cn/blog_migrate/a804061ddb4c174ef7a980d5a0ab6ce0.png)
至于为什么提高了性能,很简单,多个分区多个线程,多个线程并行处理肯定会比单线程好得多。
Topic 和 Partition 像是 HBase 里的 Table 和 Region 的概念,Table 只是一个逻辑上的概念,真正存储数据的是 Region。
这些 Region 会分布式地存储在各个服务器上面,对应于 Kafka,也是一样,Topic 也是逻辑概念,而