kafka是什么? Kafka性能极其强悍、能横向扩展

刘波

kafka 到底是干什么的?为什么阿里、字节、美团、腾讯都在用它?它解决了什么问题?别急,咱们先从一个你肯定熟悉的场景说起。

双十一零点抢购,在那一瞬间,几亿用户同时点击提交订单,这些请求像洪水一样涌向服务器。如果让这么多请求直接去操作数据库,数据库肯定当场就崩了。那怎么办呢?聪明的架构师们想了个办法,在用户和数据库之间,加一个超级蓄水池。所有订单请求先进到这个池子里排队,数据库再按照自己的处理能力,从池子里慢慢的、有序的取出订单来处理。这样一来,既不会冲垮数据库,也不会丢失任何一个订单。这个超级蓄水池,在技术世界里最典型的代表,就是咱们今天的主角 ——Kafka。

在 Kafka 出现之前,系统之间传递数据要么直接调用,要么用传统消息队列。直接调用有什么问题呢?一旦下游系统挂了或者处理太慢,上游系统就会被拖累,甚至整个系统都会瘫痪,而且系统之间强耦合,改一个地方可能影响一大片。传统消息队列虽然能解耦,但性能往往跟不上,处理不了每秒几十万条消息的海量场景。Kafka 的诞生就是为了解决这些痛点,它既能解耦系统,又能扛住超高并发,还能持久化存储数据,让消息不丢失,甚至可以重复消费。

什么是 Kafka?它官方的定义是,一个开源的分布式事件流平台。听着有点晕是吧?咱们把它拆解一下,说人话就是三个关键点。它是一个消息队列,就像咱们前面说的蓄水池,可以缓存海量数据,起到削峰填谷、解耦系统的作用;它是一个分布式系统,它不是一台服务器在战斗,而是一个由很多服务器组成的集群,所以它能处理的数据量极大,而且不容易挂掉;它是一个流平台,它不仅能存数据,还能让你对这些持续不断流入的数据进行实时的处理和分析。简单总结,Kafka 就是一个性能极其强悍、能横向扩展、专门用来处理海量实时数据的中央数据总线,或者信息高速公路。

QQ截图20251211235111.png

要搞懂 Kafka,咱们得先认识它的核心角色。第一个是生产者(producer),就是产生数据的源头。比如你手机里的外卖 APP,你下单时,它就会产生订单数据,这时候 APP 就是生产者,负责把数据放到 Kafka 这条传送带上。第二个是消费者(consumer),就是拿数据用的角色,负责消费消息,从 Kafka 里把数据读出来处理。比如外卖平台的订单管理系统、骑手派单系统,他们会从传送带上把订单数据取走,然后安排商家接单、骑手取餐。第三个是主题(topic),你可以把它理解成传送带上的分类货架,不同类型的数据要放到不同的货架上。比如外卖 APP 产生的数据里,订单数据放订单主题,用户评价数据放评价主题,这样不同类型的数据就不会混在一起,消费者就能精准找到自己需要的数据,不用在一堆数据里翻找。

Kafka 为什么这么快?Kafka 的速度,可以用一句话来形容 —— 几百万条消息每秒都不在话下。四点原因:一、顺序写,磁盘比内存还快。Kafka 的消息不是乱写,是顺序写,就像往笔记本一页页写,比东写一笔西一画快得多,现代硬盘的顺序写速度甚至比随机写内存还快。二、零拷贝(Zero copy)技术,Kafka 在发送数据时,不需要内存从 A 拷贝到 B,再拷贝到 C,它是直接把文件从磁盘通过网卡发出去,减少 CPU 开销,性能直接起飞。三、分区(partition)概念,这是 Kafka 实现高性能的关键。一个 topic 如果数据量太大,一个队列处理不过来怎么办?Kafka 会把一个 topic 切分成多个 partition,每个分区都是独立有序的队列,这样多个消费者可以同时从不同分区取数据,并行处理,大大提高了效率。四、水平扩展,当数据量增长时,只需要向集群添加更多 broker,Kafka 就能自动平衡负载,几乎没有性能瓶颈。

在可靠性方面,Kafka 有一个非常重要的使命 —— 消息不能丢,永远不能丢。有三点原因:一、消息落盘持久化,消息到达 Kafka 后,会立刻写入磁盘,不怕宕机断电。二、高可用性,Kafka 有个 broker 概念,就是 Kafka 集群里的一台台服务器,每台服务器都是一个仓库,负责存储部分分区的数据,多个 BROKER 组成一个集群,共同提供服务。Kafka 是分布式的,每个分区都可以在多个 BROKER 上有副本备份,某个节点挂了,其他副本会自动顶上,保证服务不中断。三、偏移量(offset)设计,相当于订单的序号,每条进入 partition 的消息都会被分配一个递增的序号,consumer 消费时,会记住自己读到了哪个序号,下次继续从那里往下读,保证消息既不重复也不遗漏。

Kafka 在实际生活中到底有哪些应用?比如电商平台的实时库存更新,你下单时能立刻看到库存不足,就是 Kafka 把订单数据实时传到库存系统形成的;再比如共享单车的定位追踪,每辆单车的位置数据会通过 Kafka 实时传到后台,这样你打开 APP 就能看到附近的单车;甚至像咱们每天看的新闻 APP 个性化推荐的内容,也是 Kafka 把你的浏览数据实时传给推荐系统,才算出你可能喜欢的新闻。

掌握了 Kafka,你就拥有了处理海量实时数据的核心能力,这在现代互联网架构中,是必不可少的技能。


文章版权声明:文章内容均来源于各大短视频平台搜集以及修改和删减新增,如有侵权或者违规,请联系站长进行删除,如需转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,50人围观)

还没有评论,来说两句吧...

目录[+]