1. ApachePulsar核心架构解析
Apache Pulsar作为新一代分布式消息系统,其架构设计充分吸收了传统消息中间件的经验教训。核心采用分层架构设计,将存储层与计算层分离,这种设计理念与Kafka等传统MQ有着本质区别。
1.1 多租户架构实现
Pulsar通过租户(Tenant)和命名空间(Namespace)两级抽象实现多租户隔离。每个租户可以包含多个命名空间,而命名空间则是主题(Topic)的逻辑分组单元。这种设计使得:
- 资源配额可以按租户或命名空间级别分配
- 权限控制粒度更细
- 不同业务线可以共享集群但保持隔离
实际配置示例:
properties复制# 创建租户
bin/pulsar-admin tenants create my-tenant
# 在租户下创建命名空间
bin/pulsar-admin namespaces create my-tenant/my-ns
1.2 存储计算分离设计
Pulsar将broker(计算)与bookie(存储)分离的设计带来了显著优势:
- broker无状态,便于快速扩展
- 存储层独立扩展,不受计算资源限制
- 故障恢复更快(broker宕机不影响数据)
重要提示:生产环境建议bookie节点至少3个,且磁盘需使用SSD以获得最佳性能
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 消息模型深度剖析
2.1 发布订阅模式实现
Pulsar支持多种订阅模式:
- 独占(Exclusive):单消费者独占订阅
- 故障转移(Failover):主备消费者自动切换
- 共享(Shared):多个消费者均衡负载
- Key_Shared:按消息Key分区的共享模式
订阅模式选择建议:
- 需要严格顺序消费 → 独占或故障转移
- 需要水平扩展消费能力 → 共享
- 需要按业务键保证局部顺序 → Key_Shared
2.2 消息持久化机制
消息写入流程:
- 生产者发送消息到broker
- broker将消息写入journal日志(WAL)
- 异步写入bookie存储节点
- 写入确认返回给生产者
持久化配置参数:
properties复制# 消息保留策略
managedLedgerDefaultRetentionTime=
