Kafka和消息队列之间的超快速比较

Kafka和消息队列之间的超快速比较

作者:Hendrik 2017-07-11 16:19:50

大数据

Kafka Kafka最初是由Linkedin社区开发的一项技术。简而言之,它有点像消息队列系统,但它与消息队列系统不同的就是它能够支持pub/sub,可以在许多服务器上进行扩展,并重新播放消息。

本文的目的是让读者快速了解Kafka与消息队列之间的关系,告诉读者为什么会考虑使用它的原因。以下为译文。

Kafka最初是由Linkedin社区开发的一项技术。简而言之,它有点像消息队列系统,但它与消息队列系统不同的就是它能够支持pub/sub,可以在许多服务器上进行扩展,并重新播放消息。

平时你可能不太关注这些问题,但是当你想要采用响应式编程风格而不是命令式编程风格时,上述这些就是你需要进行关注的了。

命令式编程和响应式编程之间的区别

命令式编程是我们一开始就采用的编程类型。当发生了一些事情,换句话说,事件发生了,然后你的代码被告知发生了该事件。例如,用户单击一个按钮,你在代码中处理这个事件的地方,就决定了你希望系统接下来触发哪些动作。您可以将记录保存到数据库中,调用另一个服务,发送电子邮件,或者将这些动作组合在一起。这里最重要一点是,事件是与这些具体发生的动作是直接耦合的。

响应式编程使用户能够响应发生的事件,通常以流的形式出现。多个关注点可以订阅相同的事件,并让事件在它的域中产生影响,而不管其他域发生了什么。换句话说,它支持松散耦合的代码,可以很容易地扩展到更多的功能。有可能在不同的栈中编码的各种大的下流系统会受到事件的影响,甚至是在云的某个地方执行的一大堆没有服务器的函数。

从消息队列到Kafka

为了理解Kafka会给你的架构带来什么,让我们先谈论一下消息队列。我们之所以从消息队列开始,是因为我们将讨论它的局限性,然后看看Kafka是如何解决这些问题的。

消息队列允许一组订阅者从队列的末尾提取一条或多条消息。在消息被移除之前,队列通常允许执行某些级别的事务,以确保在消息被删除之前执行所需的操作。

并不是所有的队列系统都具有相同的功能,但是一旦消息被处理了,就会从队列中删除掉。如果你仔细想想,它其实与命令式编程非常类似,首先得发生一些事情,然后起始系统决定在下游系统中应该执行哪些操作。

尽管可以在队列中扩展多个消费者,但它们都包含相同的功能,而这只是为了处理负载和并行处理消息,换句话说,它不允许你基于相同的事件启动多个独立的操作。队列消息的所有处理器将在相同的域中执行相同类型的逻辑。这意味着队列中的消息实际上是命令,它适合于命令式编程,而不是一个适合于响应式编程的事件。

 

对于队列,通常在相同的域中为队列中的每个消息执行相同的逻辑

另一方面,使用Kafka,你可以将消息/事件发布到主题上,它们会被持久化。当消费者收到这些消息时,他们也不会被移除掉。这允许你重放消息,但更重要的是,它允许大量的消费者基于相同的消息/事件处理各自不同逻辑。

你仍然可以在相同的域中进行并行处理,但是更重要的是,你还可以添加不同类型的消费者,这些消费者基于相同的事件执行不同的逻辑。换句话说,对于Kafka,用户可以采用一个被动的pub/sub体系结构。

 

不同的逻辑可以由不同的系统基于相同的事件来执行

在使用Kafka的情况下,这是可能的,因为信息是保留的,消费者群体的概念也是如此。Kafka的消费者团体在向Kafka询问关于某个话题的信息时,将自己定位于Kafka。Kafka将会记录哪些消息(偏移量)被传送到哪个消费者组,这样它就不会再为它服务了。实际上,它比这要复杂一些,因为您有许多可用的配置选项来控制这一点,但是我们不需要全面地探索这些选项,只是为了在高层次上理解Kafka。

总结

Kafka还有其它很多的功能,比如它是如何管理扩展(分区)的、为可靠消息传递提供了哪些配置选项等等,但我希望这篇文章足够好,让你明白为什么你会考虑采用Kafka而不是好的“ol消息队列”。 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/281816.html<

(0)
运维的头像运维
上一篇2025-05-13 04:22
下一篇 2025-05-13 04:23

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注