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:
      • 主要集中在流(Stream) 模式,对单个partition是独占消费,没有共享(Queue)的消费模式
    • Pulsar:
      • 提供了统一的消息模型和API 流(Stream)模式 - 独占和故障切换订阅方式; 队列(Queue)模式 – 共享订阅的方式

Apache Pulsar
https://www.dklwj.com/2023/06/Apache-Pulsar.html
作者
阿伟
发布于
2023年6月14日
许可协议