欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > [kafka] 基础知识

[kafka] 基础知识

2025/2/21 3:34:08 来源:https://blog.csdn.net/qq_49400568/article/details/144087524  浏览:    关键词:[kafka] 基础知识

Kafka基本原理详解(超详细!)_kafka工作原理-CSDN博客

Kafka

Kafka背景:Linkedin自己开发的,后面丢给apache开源了

关键词:

  • 分布式
  • 分区存储
  • 多服务
  • 消息
  • 消费者模型

为什么需要做Kafka:可以看看链接博客,里面套娃了另外一个博客,说到一个快递员以及一个收件员的故事,蛮有意思的。

关键词三个:解耦,异步,削峰

而这三个关键词最终指向了还是中间这个词,异步

因为异步,对于快递员来说,是解耦的,不需要具体等待收件人的时间,直接丢了就走,再送下一个快递。

因为异步,对于收件人来说,如果瞬时有大量的快递送达,也不需要一下次全部去拿,只要按照自己的步伐慢慢处理就可以。也就是削峰

而异步也是在通信手段里面老生常谈的通信手段。主要特点有速度快,整体性能高等,但也需要开辟缓冲区以及需要解决信息传递失效问题。

而Kafka感觉只是在背靠大数据的背景下,大量用户产生各种各样的信息需要传递,所以弄了一个分布式架构消息传递的中台总体进行管理。

具体应用场景:

假设说现在需要做一个词频分析,所有用户的搜索状态,做一个热搜,那么首先第一步就是需要获取全部的用户信息。第二部就是需要有一个接收信息并且词分的一个模块进行处理。如果不用Kafka,可能这个词分模块很快就爆了。所以就需要一个中台(可以理解为一个buffer的作用)进行统一的管理,当然这个buffer功能花样更多,因为整体系统可能不止一个这种消息需要大量传递,可能有非常非常多的数据需要交互,所以就需要Kafka作为中控作为一个统一的buffer

常用的通信模式一般就两种:一对一或者广播

消息也是这样,要么就发给一个人要么就发个一群人

然后再套用一下消费者生产者模型基本就出来了,所以本质上Kafka可以认为是消费者生产者模型中间哪一个buffer就好了,只是这个buffer比较复杂而已,而且他还需要解决一群消费者的问题。

既然是buffer为什么需要用分布式,前面说到了整体系统会有非常多乱七八糟的东西,只要需要的东西就可以认为是一个消息,那么东西可能特别多,所以用上了分布式存储以及分布式处理。

分布式也是特别特别复杂的一个东西,这里我还没研究过。

Kafka的分布式当时是直接用了zookeeper去维护的,现在自己有了新的框架KRaft。

Kafka架构

在这里插入图片描述

生产者比较简单。

最主要是如何将东西丢给消费者。

可以看到最主要的就是引入了Leader这么一个角色,leader直接跟producer进行交互,接受信息。接受完毕之后直接存储到本地的文件。

其他follower直接找leader去要这个消息就可以了。

这么一做可以很直观看到,对于接收方来说,就已经实现了异步这个手段,leader就相当一个“菜鸟裹裹”。有快递就去拿就行。

但是,producer与leader直接的异步还是没有解决,Kafka是给出了三个方案,分别有不同时机给出ACK

  1. producer不管ACK,消息发完就可以了
  2. leader自己接受到了就发ACK
  3. 所有follower接收了才发ACK

三种优劣都懂自己选就可以

消息架构搞定了,但是还有一个问题,既然需要作为中控的角色,需要跟不同的消息打交道该怎么办。

Kafka用topic针对不同的消息进行区分,当然感觉可以理解为一个用户组就好。

一个Kafka可以有好几个partition,这个partition就是用来决定刚才那个leader信息到底存在那个机器上,一般也是一个机器对应一个partition

另外的名词就是:

  • broker:一台机器上运行的一个Kafka实例
  • consumer group:一个consumer group内部成员只有一个能够消费同一个topic同一个partition的消息,消费了就没了

其他问题我觉得不是太重要我就不想研究了:

  1. leader完蛋了怎么办,替换规则是什么
  2. 分布式存储怎么做的?partition具体怎么存文档的,如何进行检索的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词