对于 Apache Pulsar
Apache Pulsar 是 Apache 软件基金会顶级我的项目,是集音讯、存储、轻量化函数式计算为一体的下一代云原生分布式音讯流平台,采纳了计算与存储拆散架构设计,反对多租户、长久化存储、多机房跨区域数据复制,具备强一致性、高吞吐、低延时及高可扩展性等流数据存储个性。
GitHub 地址:http://github.com/apache/pulsar/
转载与作者信息:本文翻译自 StreamNative 博客,原作者 Matteo Merli、郭斯杰,译者 Jipei@StreamNative。原文地址:https://streamnative.io/en/bl…
Apache Pulsar 自诞生并从 Apache 软件基金会毕业以来,已倒退为残缺的我的项目并造成了寰球上万人的社区。往年,值此 Pulsar 北美峰会收官和 Pulsar 2.8.0 版本公布之际,Pulsar 在我的项目和社区上都迎来了新的里程碑。借此机会,咱们独特回顾 Pulsar 的技术及生态倒退。
Apache Pulsar 的诞生
Apache Pulsar 在寰球有数百家公司宽泛采纳,包含 Splunk、腾讯、Verizon 和 Yahoo! JAPAN 等。Apache Pulsar 从一开始的只是一款云原生分布式音讯零碎,现已倒退成为一个残缺的音讯和流的平台,可用于公布和订阅、实时存储和解决大规模数据流。
Pulsar 诞生于 2012 年,最后的目标是为在 Yahoo 外部,整合其余音讯零碎,构建对立逻辑、撑持大集群和跨区域的音讯平台。过后的其余音讯零碎(包含 Kafka),都不能满足 Yahoo 的需要,比方大集群多租户、稳固牢靠的 IO 服务质量、百万级 Topic、跨地区复制等,因而 Pulsar 应运而生。
过后,通常有两种类型的零碎来解决动态数据:实时处理要害业务事件的音讯队列,以及大规模解决可扩大数据管道的流零碎。许多公司不得不将他们的性能限度在其中一种,或者不得不采纳多种不同的技术。如果抉择多种技术通常会导致数据隔离和数据孤岛:一个用于音讯队列的孤岛来构建应用服务,另一个用于构建数据服务的流零碎。公司的基础设施通常极其简单,下图阐明该架构。
然而,随着公司须要解决的数据类型增多,经营数据(如日志数据、点击事件等),以及须要拜访组合业务数据和经营数据的上游零碎数量的减少,零碎须要反对音讯队列和流两种场景。
除此之外,公司须要一个基础设施平台,容许他们在其上构建所有应用程序,而后让这些应用程序默认解决动态数据(音讯和流数据)。通过这种形式,能够显著简化实时数据基础设施,如下图。
在这样的愿景下,Yahoo! 团队开始致力于为动态数据构建对立的音讯流平台。以下是 Pulsar 成立至今的要害里程碑。
里程碑 1:数据流的可扩大存储
Pulsar 的诞生始于 Apache BookKeeper。Apache BookKeeper 为连续流实现了相似日志的形象,并提供了在互联网规模上应用简略的写 - 读日志 API 运行它的能力。日志为构建分布式系统提供了很好的形象,如分布式数据库和公布 - 订阅音讯。写入 API 以附加到日志的模式呈现。读取 API 是从 reader 定义的起始偏移量间断读取。BookKeeper 的实现奠定了根底——可扩大的基于日志的音讯和流零碎。
里程碑 2:存储、计算拆散的多层架构。
在可扩大的日志存储之上引入了一个无状态服务层,通过运行无状态 broker 来公布和生产音讯。这种多层架构将服务 / 计算与存储拆散,容许 Pulsar 在不同的层中治理服务和存储。
这种架构保障了即时可扩展性和更高的可用性,使 Pulsar 非常适合构建要害工作服务,例如金融场景中的计费平台、电子商务和零售商的交易解决零碎以及金融机构的实时危险控制系统。
里程碑 3:对立的音讯模型和 API
在古代数据架构中,实时场景通常能够分为两类:队列和流。队列通常用于构建外围业务应用程序服务,流通罕用于构建实时数据服务,如数据管道。
为了提供一个可能同时为应用程序和数据服务提供服务的平台,须要一个集成了队列和流语义的对立音讯模型。Pulsar topic 成为生产的真正起源。音讯只能在 topic 上存储一次,但能够通过不同的订阅以不同的形式生产。这种对立大大降低了治理和开发音讯和流应用程序的复杂性。
里程碑 4:Schema API
接着,Pulsar 内增加了新的 Pulsar schema registry 和一个新平安类型 producer 和 consumer API。内置的 schema registry 使 Pulsar topic 上的音讯 producer 和 consumer 可能通过 Pulsar broker 自身协调 topic 数据的构造,而无需内部协调机制。应用 schema 数据,通过 Pulsar 传输的每条数据都是齐全可发现的,用户可能构建轻松适应数据变动的零碎。
此外,schema registry 会跟踪 schema 版本之间的数据兼容性。随着新的 schema 的上传,registry 保障旧的 consumer 可能读取新的 schema 版本,以确保 producer 不能毁坏 consumer。
里程碑 5:Functions 和 IO API
下一步是构建 API,以便轻松地从 Pulsar 输入输出并解决数据。其指标是应用 Apache Pulsar 轻松构建事件驱动的应用程序和实时数据管道,无论来自何处,用户都能够在事件达到时对其进行解决。
Pulsar IO API 使用户能够通过插入各种 source connector – 将数据从内部零碎输出到 Pulsar、sink connector – 将数据从 Pulsar 输入到内部零碎,来构建实时流数据管道。目前,Pulsar 提供了多个内置 connector,用户开箱即用。
此外,StreamNative 保护的 StreamNative Hub(Pulsar connector 的 registry),提供了数十个与风行数据系统集成的 connector。如果 IO API 用于构建流数据管道,则 Functions API 用于构建事件驱动的应用程序和实时流处理器。
无服务器 function 的概念被用于流解决,而后将 Functions API 构建为轻量级无服务器库,用户能够应用任何语言编写任何事件、解决逻辑。工程师团队无需运行和保护另一个集群就可能编写流解决逻辑。
里程碑 6:通过分层存储为 Pulsar 提供有限存储
随着 Apache Pulsar 的遍及以及 Pulsar 中存储的数据量的减少,用户最终遇到了“保留悬崖”(retention cliff),此时在 Apache BookKeeper 中存储、治理和检索数据的老本变得更加低廉。为了解决这个问题,运维工程师和应用程序开发人员通常应用 AWS S3 等内部存储作为长期存储的 sink,然而这样会失去 Pulsar 的不可变流和排序语义的大部分劣势,而用户最终不得不治理具备不同拜访模式的两套零碎。
分层存储的引入反对 Pulsar 将大部分数据卸载到近程云原生存储。这种更便宜的存储模式很容易随着数据量而扩大。更重要的是,通过分层存储,Pulsar 提供了在与 Flink 等批流交融处理器集成时所需的批处理存储能力。与 Pulsar 集成的批流一体使公司可能疾速轻松地查问具备历史背景的实时流,减少竞争劣势。
里程碑 7:插件协定
在引入分层存储之后,Pulsar 从一个 Pub/Sub 音讯零碎演变为一个可扩大的流数据系统,能够接管、存储和解决数据流。然而,应用其余音讯协定(例如 Kafka、AMQP、MQTT 等)编写的现有应用程序必须重写能力采纳 Pulsar 的音讯协定。
插件协定 API 进一步升高了采纳 Pulsar 构建音讯流的开销,开发人员可利用 Pulsar 架构提供的所有劣势将 Pulsar 性能扩大到其余音讯畛域。于是 StreamNative 和其余行业领导者开展单干,开发风行的插件协定,包含:
- Kafka-on-Pulsar (KoP),由 OVHCloud 和 StreamNative 于 2020 年 3 月开源;
- AMQP-on-Pulsar (AoP),由中国移动和 StreamNative 于 2020 年 6 月开源;
- MQTT-on-Pulsar (MoP),由 StreamNative 于 2020 年 8 月开源;
- RocketMQ-on-Pulsar (RoP),由腾讯云和 StreamNative 于 2021 年 5 月开源。
里程碑 8:用于 exactly-once 流解决的事务 API
最近,事务被增加到 Apache Pulsar,以便为流解决启用 exactly-once 语义。这项基本功能为流数据转换提供了强有力的保障,能够轻松构建可扩大、容错、有状态的音讯流应用程序来解决流数据。
此外,事务 API 性能不限于已有的客户端语言。Pulsar 对事务性音讯流的反对是一种能够用任何语言出现的协定级性能。此类协定级性能可用于各种应用程序。
打造音讯流对立的生态
除了对 Pulsar 技术继续降级,社区还致力于建设一个弱小的周边生态系统。Pulsar 可能反对丰盛的 pub-sub 库、connector、function、插件协定以及与风行引擎集成的生态系统,使 Pulsar 用户可能简化工作流程并利用于新的场景。
相干浏览
- Pulsar 2.8.0 新增个性概览:独占 Producer、事务等
- 社区活动|继北美峰会,首届 Pulsar Summit 欧洲峰会 2021 启动演讲征集!
想要与社区交换吗?扫描下方 Pulsar Bot 二维码,退出 Pulsar 微信交换群
点击链接,获取 Apache Pulsar 硬核干货材料!