Apache Pulsar 介绍
🔧发布-订阅消息系统
关于发布-订阅模型的概念,主要从多租户、灵活的消息系统、云原生构架、分片的流(Segmented Streams)等方面来强调 Apache Pulsar 的功能和特性。
🔧多租户
租户和命名空间(namespace)是 Pulsar 支持多租户的两个核心概念。
在租户级别,Pulsar 为特定的租户预留合适的存储空间、应用授权与认证机制。 在命名空间级别,Pulsar 有一系列的配置策略(policy),包括存储配额、流控、消息过期策略和命名空间之间的隔离策略。
🔧灵活的消息系统
Pulsar 做了队列模型和流模型的统一,在 Topic 级别只需保存一份数据,同一份数据可多次消费。以流式、队列等方式计算不同的订阅模型大大提升了灵活度。
🔧云原生架构
Pulsar 使用计算与存储分离的云原生架构,数据从 Broker 搬离,存在共享存储内部。上层是无状态 Broker,复制消息分发和服务;下层是持久化的存储层 Bookie 集群。Pulsar 存储是分片的,这种构架可以避免扩容时受限制,实现数据的独立扩展和快速恢复。
🔧Segmented Streams
Pulsar 将无界的数据看作是分片的流,分片分散存储在分层存储(tiered storage)、BookKeeper 集群和 Broker 节点上,而对外提供一个统一的、无界数据的视图。其次,不需要用户显式迁移数据,减少存储成本并保持近似无限的存储。
🔧跨地域复制
Pulsar 中的跨地域复制是将 Pulsar 中持久化的消息在多个集群间备份。在 Pulsar 2.4.0 中新增了复制订阅模式(Replicated-subscriptions),在某个集群失效情况下,该功能可以在其他集群恢复消费者的消费状态,从而达到热备模式下消息服务的高可用。
🗂层级存储
Infinite Stream: 以流的方式永久保存原始数据 分区的容量不再受限 充分利⽤云存储或现有的廉价存储 ( 例如 HDFS) 数据统⼀表征:客户端无需关⼼数据究竟存储在哪⾥
🗂Pulsar Functions
Pulsar Functions 是一个轻量级的计算框架,可以给用户提供一个部署简单、运维简单、API 简单的 FASS(Function as a service)平台。Pulsar Functions 提供基于事件的服务,支持有状态与无状态的多语言计算,是对复杂的大数据处理框架的有力补充。
🗂Pulsar IO
Pulsar IO 分为输入(Input)和输出(Output)两个模块,输入代表数据从哪里来,通过 Source 实现数据输入。输出代表数据要往哪里去,通过 Sink 实现数据输出。
🗂Pulsar 与大数据处理框架的集成
>>> Spark
>>> Flink
https://github.com/streamnative/pulsar-flink
>>> Pulsar Manager
>>> Pulsar-io-Kafka
https://github.com/streamnative/pulsar-io-kafka
对于实时数据处理中 Kafka 数据的导入,使用 StreamNative 开源的 pulsar-io-kafka 项目,可以把 Kakfa 中的数据读出并写入到 Pulsar 中。
Apache Pulsar 在腾讯计费场景下的应用 甜橙金融如何利用 Apache Pulsar 在日均上亿的交易中抵御金融诈骗 雅虎日本如何用 Pulsar 构建日均千亿的消息平台 Apache Pulsar在智联招聘的实践 -- 从消息队列到基于Apache Pulsar的事件中心 个推基于 Apache Pulsar 的优先级队列方案 Apache Pulsar 在 EMQ 物联网平台产品 ActorCloud 上的应用 STICORP 案例 雅虎案例 https://yahooeng.tumblr.com/post/150078336821/open-sourcing-pulsar-pub-sub-messaging-at-scale
🙋 更多 Pulsar 用户,可点击「阅读原文」进行了解哦~