下面给你整理一份 《Apache Pulsar 简介及集群安装过程(超清晰实战版)》,内容涵盖 Pulsar 基础概念、架构特点、单机与集群部署全流程,适合快速上手与实际生产使用。
Apache Pulsar 简介及集群安装过程(最全实战)
Apache Pulsar 是下一代云原生分布式消息流平台,由 Yahoo 开发并捐赠给 Apache。它同时支持 消息队列(MQ) 与 流系统(Streaming) 场景,是 Kafka 的强有力竞争者。
一、Pulsar 简介
1. Pulsar 是什么?
Pulsar = 消息队列(像 RabbitMQ / RocketMQ) + 日志流系统(像 Kafka)
核心特性:
- 分布式、多租户
- 计算与存储分离
- 强一致性消息存储
- 原生支持多种协议:Pulsar、Kafka、AMQP、MQTT、JMS
- 无限流 + 传统消息队列一体化
- 水平扩展毫无压力
二、Pulsar 的核心架构
Pulsar 的架构相比 Kafka 最大优势是 分层设计:
1. Broker(计算层)
- 接收生产者消息、推送给消费者。
- 无状态,可无限横向扩容。
2. BookKeeper(存储层)
- 使用 Bookie 节点存储消息段(Ledger)
- 强一致性写入
- 可实现真正的多副本高可用
3. ZooKeeper(元数据)
- 存储集群元数据、簇信息、Broker 列表等
- 自 2.10 之后支持不用 ZK(使用 Metadata Store),但生产仍大量使用 ZK 方案
三、Pulsar 的主要优势
| 功能 | Kafka | Pulsar |
|---|---|---|
| 架构 | 存储计算耦合 | 存储计算分离 |
| 多租户 | 无原生支持 | 原生支持 |
| 消息存储 | 多副本+分区文件 | BookKeeper 分布式日志 |
| 延时消息 | 需要额外组件 | 内置 |
| 协议兼容 | Kafka 兼容 Kafka | 原生兼容 Kafka/AMQP/MQTT/JMS |
| 自动扩容 | 难 | 极易扩容 Broker |
非常适合:
- 大规模流式系统
- 秒级延时、稳定性要求高场景
- 多租户 SaaS 服务
四、Pulsar 集群安装步骤
本章节提供三种方式:
- 本机单节点(Standalone 模式)
- Docker 简易 Pulsar 集群
- 生产级 3 节点 Pulsar + BookKeeper + ZooKeeper 集群部署
五、方式一:Standalone 模式(单机)
适合测试或开发。
1. 下载 Pulsar
wget https://archive.apache.org/dist/pulsar/pulsar-3.0.0/apache-pulsar-3.0.0-bin.tar.gz
tar xvf apache-pulsar-3.0.0-bin.tar.gz
cd apache-pulsar-3.0.0
2. 启动单机模式
bin/pulsar standalone
默认会启动:
- Pulsar Broker
- BookKeeper
- ZooKeeper
- Web 管理界面:http://localhost:8080
六、方式二:使用 Docker 启动 Pulsar 简易集群
适合快速验证集群能力。
docker-compose.yml 示例:
version: '3.7'
services:
pulsar:
image: apachepulsar/pulsar:3.0.0
container_name: pulsar
entrypoint: ["/bin/bash", "-c", "bin/pulsar standalone"]
ports:
- "6650:6650"
- "8080:8080"
启动:
docker-compose up -d
七、方式三:生产环境 3 节点 Pulsar 集群安装(完整版)
适用于实际生产部署。
你需要至少:
- 3 台节点(兼容 ZooKeeper 与 BookKeeper)
- 每台机器至少 4C 8G,SSD 最好
- 节点列表:
- node1(10.0.0.1)
- node2(10.0.0.2)
- node3(10.0.0.3)
步骤 1:安装 Pulsar 并创建目录
三台机器同时执行:
mkdir -p /opt/pulsar
cd /opt
wget https://archive.apache.org/dist/pulsar/pulsar-3.0.0/apache-pulsar-3.0.0-bin.tar.gz
tar xvf apache-pulsar-3.0.0-bin.tar.gz
mv apache-pulsar-3.0.0 pulsar
步骤 2:配置 ZooKeeper(元数据)
三台机器编辑:
conf/zookeeper.conf
参数示例:
dataDir=/opt/pulsar/data/zookeeper
clientPort=2181
server.1=10.0.0.1:2888:3888
server.2=10.0.0.2:2888:3888
server.3=10.0.0.3:2888:3888
初始化 ZK(仅 node1 执行一次):
bin/pulsar initialize-cluster-metadata \
--cluster pulsar-cls \
--zookeeper 10.0.0.1:2181 \
--configuration-store 10.0.0.1:2181 \
--web-service-url http://10.0.0.1:8080 \
--web-service-url-tls https://10.0.0.1:8443 \
--broker-service-url pulsar://10.0.0.1:6650 \
--broker-service-url-tls pulsar+ssl://10.0.0.1:6651
启动 ZooKeeper:
bin/pulsar-daemon start zookeeper
步骤 3:配置 BookKeeper(存储层)
编辑:conf/bookkeeper.conf
设置:
zkServers=10.0.0.1:2181,10.0.0.2:2181,10.0.0.3:2181
journalDirectory=/opt/pulsar/data/bookkeeper/journal
ledgerDirectories=/opt/pulsar/data/bookkeeper/ledger
启动 BookKeeeper:
bin/pulsar-daemon start bookie
步骤 4:配置 Pulsar Broker(计算层)
编辑:conf/broker.conf
clusterName=pulsar-cls
zookeeperServers=10.0.0.1:2181
configurationStoreServers=10.0.0.1:2181
webServicePort=8080
brokerServicePort=6650
启动 Broker:
bin/pulsar-daemon start broker
三台机器都执行。
步骤 5:验证 Pulsar 是否正常运行
查看 Broker 列表:
curl http://10.0.0.1:8080/admin/v2/brokers/pulsar-cls
输出示例:
["10.0.0.1:8080","10.0.0.2:8080","10.0.0.3:8080"]
步骤 6:测试生产与消费
创建一个 topic
bin/pulsar-admin topics create persistent://public/default/my-topic
启动生产者
bin/pulsar-client produce my-topic -m "hello pulsar"
启动消费者
bin/pulsar-client consume my-topic -s sub1 -n 0
八、集群监控
Pulsar 支持:
- Prometheus
- Grafana Dashboard
- BookKeeper metrics
- Broker metrics
开启监控非常简单,只需在 broker.conf 中开启 metrics。
九、常见部署问题总结
| 问题 | 原因 | 解决 |
|---|---|---|
| 启动 BookKeeper 报 ZK not found | IP 错误 | 检查 zkServers |
| Broker 启动失败 | 元数据初始化失败 | 必须先 init metadata |
| 客户端连接不上 | 端口未开放 | 开放 6650/8080 |
| 写入速度掉底 | journal 未使用 SSD | 建议 SSD + 独立盘 |
十、结语
Apache Pulsar 是下一代消息系统的代表:稳定、高扩展、多协议、云原生。如果你正在考虑从 Kafka 或 RabbitMQ 升级架构,Pulsar 是非常值得尝试的方向。