文章目录

Apache Pulsar 是 Apache 顶级项目,云原生分布式消息流平台,GitHub 星标超过 1.3k。它最初由 Yahoo 开发,现在很多大公司用来做统一消息服务,消息、流处理、持久化读写都能搞定。
我看过 Pulsar 的架构,存算分离设计确实解决了 Kafka 很多痛点,现在用的人越来越多。今天聊聊它好在哪。
Pulsar 解决了什么问题
Kafka 存大量 topic 扩容麻烦,每个分区都要存数据,扩容得迁移数据,太折腾。多租户支持不好,你要给不同租户做隔离,得拆多个集群,麻烦。既要消息队列又要流处理,还得套一层别的工具,Pulsar 一个就搞定。
Pulsar 存算分离,broker 只管调度,数据存在 BookKeeper 存储层,扩容加 broker 就行,不用迁移数据,太方便。多租户原生支持,权限隔离做得好,同一个集群给多个租户用,不用搭多个。支持多种消费模式,队列、流、持久化、非持久化,全都搞定。
基础例子看一下
用 Docker 跑一个 standalone 模式开发环境:
bash
docker run -d -p 6650:6650 -p 8080:8080 apachepulsar/pulsar:2.11.0 bin/pulsar standalone
管理界面打开 http://localhost:8080,默认 token 是 admin,登录就能看租户、namespace、topic。
Java 代码发消息:
java
PulsarClient client = PulsarClient.builder()
.serviceUrl("pulsar://localhost:6650")
.build();
Producer<byte[]> producer = client.newProducer()
.topic("persistent://public/default/my-topic")
.create();
producer.newMessage()
.value("Hello Pulsar".getBytes())
.send();
System.out.println("Message sent");
消费消息:
java
Consumer<byte[]> consumer = client.newConsumer()
.topic("persistent://public/default/my-topic")
.subscriptionName("my-subscription")
.messageListener((consumer, msg) -> {
System.out.printf("Received message: %s%n", new String(msg.getData()));
consumer.acknowledge(msg);
})
.subscribe();
就这么简单,启动完就能发消息收消息,搞定。
核心特性
存算分离架构
Broker 无状态,只管调度,数据存在 BookKeeper 存储层,扩容直接加 broker 就行,不用迁移数据,扩缩容秒级完成。
原生多租户
多租户天然支持,租户之间权限隔离、资源隔离,同一个集群给多个团队用,不用搭多个集群,省资源好管理。
多种消费模式
独占、共享、故障转移多种订阅模式,满足消息队列、流处理各种场景,既能做传统消息队列也能做持久化流存储。
跨地域复制
跨地域复制原生支持,多个数据中心之间自动同步消息,跨地域容灾方便,多区域部署简单。
分层存储
冷 data 自动分层到 cheaper 存储比如 S3,热数据放本地,省钱还能访问,不用自己做归档。
兼容多种协议
原生支持 HTTP,还有 Kafka on Pulsar,你原来用 Kafka 不用改代码就能迁过来。
哪些场景用 Pulsar
企业多租户场景,多个团队共用消息集群,Pulsar 原生支持,不用搭多个集群,方便。大数据流处理,需要持久化存储流数据,Pulsar 一个搞定,不用 Kafka 再加 HDFS。
混合场景既要消息队列也要流处理,Pulsar 统一搞定,不用维护两个系统。跨地域多数据中心,地理复制原生支持,容灾方便。
云原生环境,Kubernetes 上运行,Pulsar 设计云原生,Operator 也有,部署方便。
Pulsar 有哪些优缺点
优点就是架构先进,存算分离解决了 Kafka 扩容痛点,多租户做得好,功能齐全,消息流都支持,一个顶俩。社区现在发展很快,Apache 顶级项目,商业公司也支持,更新快。
缺点呢,整体还是比 Kafka 年轻,生态不如 Kafka 完善,多语言客户端不如 Kafka 全,国内用户比 Kafka 少一点,资料相对少一点。硬件要求比 Kafka 高一点,因为有存储节点,小集群资源占用多一点。
现在 Pulsar 发展得怎么样
从 Yahoo 捐给 Apache,很快毕业变成顶级项目,现在越来越多公司开始用,很多公司从 Kafka 迁过来解决扩容和多租户问题,发展很快,版本更新勤快,功能越来越完善。
现在学 Pulsar 值得吗
做云原生大数据开发,肯定值得学,架构确实先进,解决了很多老消息队列的痛点,未来趋势不错。基础使用不难,Docker 启动就能试,跟着例子走,一天就能跑通,常用操作半天学会。现在越来越多公司用上了,早学会早受益,绝对值得学。
项目地址:https://github.com/apache/pulsar
础使用不难,Docker 启动就能试,跟着例子走,一天就能跑通,常用操作半天学会。现在越来越多公司用上了,早学会早受益,绝对值得学。