Apache Pulsar
Apache Pulsar
基本介绍
Apache Pulsar 是一个云原生企业级的发布订阅(pub-sub)消息系统,Pulsar 诞生于 2012年,最初由Yahoo开发,并于2016年底开源,现在是Apache软件基金会顶级开源项目,Pulsar在Yahoo的生产环境运行了三年多,助力Yahoo的主要应用,如Yahoo mail、Yahoo finance、Yahoo sports、Flickr、Gemini广告平台和Yahoo分布式键值存储系统Sherpa。
Apache Pulsar的功能与特性
- 多租户模式
- 灵活的消息系统
- 云原生架构
- segmented Sreams(分片流)
- 支持跨地域复制
多租户模式
- 租户和命名空间(namespace)是Pulsar支持多租户的两个核心概念
- 在租户级别,Pulsar为特定的租户预留合适的存储空间、应用授权与认证机制
- 在命名空间级别,Pulsar有一系列的配置策略(policy),包括存储配额、流控、消息过期策略和命名空间之间的隔离策略
灵活的消息系统
- Pulsar做了队列模型和流模型的统一,在topic级别只需保存一份数据,同一份数据可多次消费,以流式、队列等方式计算不同的订阅模型大大提升了灵活度
- 同时Pulsar通过事务采用exactly-once(精准一次)在进行消息传输过程中,可以确保数据不丢不重
云原生架构
- Pulsar使用计算与存储分离的云原生架构,数据从Broker搬离,存在共享存储内部,上层是无状态Broker,复制消息分发和服务、下层是持久化的存储 层Bookie集群。Pulsar存储是分片的,这种架构可以避免扩容时受限制,实现数据的独立扩展和快速恢复
Segmented Streams(分片流)
- Pulsar将无界的数据看作是分片的流,分片分散存储在分层存储(tiered storage)、BookKeeper集群和Broker节点上,而对外提供一个统一的、无界数据的视图。其次,不需要用户显示迁移数据,减少存储成本并保持近似无限的存储。
支持跨地域复制
- Pulsar中的跨地域复制是将Pulsar中持久化的消息在多个集群间备份,在Pulsar 2.4.0中新增了复制订阅模式(Replicated-subscriptions)在某个集群失效情况下,该功能可以在其他集群恢复消费者的消费状态、从而达到热备模式下消息服务的高可用。
Pulsar组件介绍
1. 层级存储
infinite Stream: 以流的方式永久保存原始数据
分区的容量不再受限制
充分利用云存储或现有的廉价存储(如大数据中的HDFS)
数据统一表征:
- 客户端无需关系数据究竟存储在那里
2. Pulsar IO(Connector)连接器
- Pulsar IO 分为输入(input)和输出(output)两个模块,输入代表数据从那里来,通过source实现数据输入。输出代表数据要往那里去,通过Sink实现数据输出。
- Pulsar 提出了Connector(也称为Pulsar IO)用于解决Pulsar与周边系统的集成问题,帮助用户高效完成工作。
- 目前Pulsar IO支持非常多的连接集成操作: 例如HDFS、Spark、Flink、Flume、ES、HBASE等
3. Pulsar Funcations(轻量级计算框架)
- Pulsar Funcations是一个轻量级的计算框架,可以给用户提供一个部署简单、运维简单、API简单的FASS(Function as a service)平台。Pulsar Functions提供基于事件的服务,支持有状态与无状态的多语言计算,是对复杂的大数据处理框架的有力补充。
- Pulsar Funcations 的设计灵感来自于heron这样的流处理引擎,Pulsar Funcations将会拓展Pulsar和整个消息领域的未来,使用Pulsar Funcations用户可以轻松地部署和管理funcations通过funcation从Pulsar topic读取数据或者生产新数据到Pulsar topic。
Pulsar与kafka的对比
- 模型概念
- kafka:
- producer - topic - consumer group - consumer
- Pulsar:
- producer - topic - subsciption - consumer
- kafka:
- 消息消费模型
- kafka:
- 主要集中在流(Stream) 模式,对单个partition是独占消费,没有共享(Queue)的消费模式
- Pulsar:
- 提供了统一的消息模型和API 流(Stream)模式 - 独占和故障切换订阅方式; 队列(Queue)模式 – 共享订阅的方式
- kafka:
Apache Pulsar
https://www.dklwj.com/2023/06/Apache-Pulsar.html