<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pulsar on 追风笔记</title><link>https://f91dba72.wangpeng.pages.dev/tags/pulsar/</link><description>Recent content in Pulsar on 追风笔记</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Sat, 28 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://f91dba72.wangpeng.pages.dev/tags/pulsar/index.xml" rel="self" type="application/rss+xml"/><item><title>消息队列选型：Kafka vs Pulsar vs RabbitMQ</title><link>https://f91dba72.wangpeng.pages.dev/columns/data/message-queue/</link><pubDate>Sat, 28 Feb 2026 00:00:00 +0000</pubDate><guid>https://f91dba72.wangpeng.pages.dev/columns/data/message-queue/</guid><description>&lt;p&gt;消息队列是分布式系统的神经系统，但 Kafka、Pulsar、RabbitMQ 三者的设计哲学差异极大。选错不是「换个客户端」的事，而是架构重做。下面从几个工程最关心的维度拆开看。&lt;/p&gt;&#10;&lt;h2 id="模型差异是根本"&gt;模型差异是根本&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;RabbitMQ&lt;/strong&gt;：经典消息代理，面向「消息」和「队列」，支持丰富路由（直连、主题、头部、扇出）。适合任务分发、低延迟小消息。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Kafka&lt;/strong&gt;：日志型、分区有序、拉取消费，面向「流」和「事件溯源」。适合高吞吐、可重放。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Pulsar&lt;/strong&gt;：计算存储分离，分层架构，原生多租户和跨地域复制。适合既要 Kafka 的流、又要 RabbitMQ 的队列语义的统一平台。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-e7471357-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="4"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-e7471357-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Kafka 顺序消费依赖分区&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bin/kafka-console-consumer.sh &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --topic orders --bootstrap-server b1:9092 &lt;span class="se"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --partition &lt;span class="m"&gt;0&lt;/span&gt; --offset earliest&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="关键维度对比"&gt;关键维度对比&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;维度&lt;/th&gt;&#10; &lt;th scope="col"&gt;Kafka&lt;/th&gt;&#10; &lt;th scope="col"&gt;Pulsar&lt;/th&gt;&#10; &lt;th scope="col"&gt;RabbitMQ&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;吞吐&lt;/td&gt;&#10; &lt;td&gt;极高&lt;/td&gt;&#10; &lt;td&gt;极高&lt;/td&gt;&#10; &lt;td&gt;中等&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;消息模型&lt;/td&gt;&#10; &lt;td&gt;流/日志&lt;/td&gt;&#10; &lt;td&gt;流+队列&lt;/td&gt;&#10; &lt;td&gt;队列&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;顺序性&lt;/td&gt;&#10; &lt;td&gt;分区内有序&lt;/td&gt;&#10; &lt;td&gt;分区/Key 有序&lt;/td&gt;&#10; &lt;td&gt;队列有序&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;运维复杂度&lt;/td&gt;&#10; &lt;td&gt;中&lt;/td&gt;&#10; &lt;td&gt;高（含 BookKeeper）&lt;/td&gt;&#10; &lt;td&gt;低&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;消费模型&lt;/td&gt;&#10; &lt;td&gt;拉取、可重放&lt;/td&gt;&#10; &lt;td&gt;拉取、可重放&lt;/td&gt;&#10; &lt;td&gt;推送&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="选型思路"&gt;选型思路&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;事件流、日志、可重放&lt;/strong&gt; → Kafka 稳。审计、CDC、行为埋点这类场景它的重放能力几乎是刚需。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;统一消息平台、多租户、跨地域&lt;/strong&gt; → Pulsar 更合适，但团队要扛得住运维。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;任务队列、复杂路由、低延迟&lt;/strong&gt; → RabbitMQ 更直接。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-e7471357-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="java" data-td-line-count="4"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-e7471357-fence-1-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// 用消息头做复杂路由（RabbitMQ 风格）&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;basicPublish&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;orders.topic&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;order.created.vip&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// routingKey&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;props&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;别用 RabbitMQ 扛日均百亿事件流，也别用 Kafka 做需要复杂路由的任务分发——用对的工具，比用最强的工具重要。&lt;/p&gt;</description></item></channel></rss>