Apache 顶级项目 Apache Pulsar 成长回顾
关于 Apache Pulsar
Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐以及低延时的高可扩展流数据存储特性。
本篇文章,我们将带着刚刚圆满结束的 Pulsar Summit 精华版内容,为大家分享 Apache Pulsar 的成长历史。
关于 Pulsar Summit 会议
本次 Pulsar Summit 主要是由 StreamNative 和 Splunk 主办,集结了来自欧洲、亚洲、北美洲众多国际大厂的 CEO、开发人员、数据架构师等。
还有来自 Pulsar Committer、Contributor 的实战经验分享,涉及发布/订阅消息、事件流、无服务器计算、实时分析、事件驱动应用程序和管理生产中的关键任务等最佳实践。
Pulsar 项目的成长
Pulsar 最初是以「集消息和事件流为一体的云原生平台」出现在众人面前。Pulsar 项目的支撑不仅仅是地域性的,其实更是一个全球性的开源项目,达到了几大洲用户/使用率同步增长的效果。

很多国际性公司,比如 Splunk、Narvar、Instructure、腾讯、虎牙等,这些公司大多看中了 Pulsar 的独特性能,开始用 Pulsar 替代之前的系统进行部署自己的产品,也通过他们的用户扩大了 Pulsar 项目影响力和社区活跃度,使 Pulsar 获得了更多关注。

想要获取更多使用 Pulsar 来部署自己产品的公司列表,可以参考:
https://pulsar.apache.org/en/powered-by/。
Pulsar 优势
同时,在年初我们整理「Pulsar 年度报告」时,也总结出了 Pulsar 的一些优势,比如:
- 可以增加产品敏捷性,让公司快速应对市场变化;
- 为业务开发解锁新的使用方向;
- 降低开发成本以及改进客户体验等。
Apache Pulsar 用其差异化特色吸引了越来越多的用户。
在调查中也发现,Pulsar 云原生、存储与计算分离和以分片为中心的架构设计,是用户最喜爱的亮点。还有可强伸缩性和高弹性,Pulsar 真的是把 MQ行业的特点拿捏的恰到好处呢,费用不太高还很能干,性价比超高的好嘛!!

我们在收集 Pulsar 用户案例时也发现,大部分用户将 Pulsar 用作打造异步应用程序、核心项目等实践,或者是从 Kafka 等项目迁移到 Pulsar 来构建 ETL 流水线(提取、转换、加载)操作等。这也是目前 Pulsar use case 的核心使用场景。
同时在个人使用用户中,大家使用最多的功能:比如 Pub/Sub、多租户、跨区域复制、Pulsar Functions 和 Connectors、分层存储,都成为用户青睐的特点,说明 Pulsar 也有其不可替代之处,更多的实用特点还等着大家一起去开发鸭!
社区成长
我们在之前很多时候都是在介绍 Pulsar 产品的一些动态,或者技术上的一些更新发布,很少会去提 Pulsar 整个社区的动态。
其实从 2019 年 1月开始,到现在 2020 年 6 月份左右,contributor 的数量从 48 人增加到 280 人左右,18 个月的时间达到了 7 倍级的数量增长。从数据增长上,我们也很感谢大家的参与和项目支持!
Pulsar 的未来
从最开始的项目孵化到现在,基础层面的代码基本没有改动过,一直执行着它「分层分块」架构的模型。在产品方面,Pulsar 的工程师们致力于将最好的基础设施让用户们去构建消息系统。
同时,在社区里聆听和接纳用户们的不同需求和建议,对 Pulsar 产品进行一代又一代的更新和完善。
从一开始的分层存储 Pub-Sub 开始搭建,添加 Schema 让整个数据变得更加结构化;添加 Functions 让 Pulsar 拥有实时流数据的处理能力;添加 Connector 让 Pulsar 可以与第三方系统更简易化对接;引入 SQL,可以使用 SQL 语言在 Pulsar 里查询数据等等。
这些都是 Pulsar 产品的大进步。
Pulsar Message
Pulsar 作为一个消息中间件,它的目标一直都是提供最核心的消息发布和订阅,让用户使用不同的协议、语言,从不同的地方来生产和消费消息。
对于消息协议的支持,Pulsar 最近也是在不停地拓展。比如已经开源的 KoP(Kakfa on Pulsar)、AoP(AMQP on Pulsar)。这些我们之前都发布过文章,大家可以点击文字直接跳转查看。
当然,之后我们也会开源出 MoP(MQTT on Pulsar),让 Pulsar 可以更加方便地支持这些不同类型的消息协议。
同时关于一些新功能也都在扩展中,比如事务支持、REST API 的生产和消费、只读 broker 、exclusive producer、自动扩缩容等等。这些都会逐渐在未来版本中一一呈现。
Pulsar Storage
在存储方面,Pulsar 也在致力成为流数据存储平台,基本都是围绕在性能、可操作性和成本开销方面去进行开发,使 Pulsar 和 BookKeeper 作为高效平台在不同环境中运行。比如说云端存储或者持久化部署。
但其实从存储层面看的话,Pulsar 的每一个大版本都围绕存储做了改进,也奠定了存储和计算分离的功能。
- 分布式 log:基础存储
- Schema:结构化存储
- 分层存储:无限流容量
- Topic 压缩:表和流二元表达
- Key-Value:函数状态访问
包括新增的 Columnar Offloader、State store 等功能,也在存储层面为 Pulsar 的功能性添砖加瓦。
Pulsar Processing
有了消息和存储后,为了让收集到 Pulsar 的数据有价值,就需要计算过程了。Pulsar 在计算层面主要是想做到实时、大规模地处理事件流。
- 利用 Pulsar Functions,可以实现更轻量级/无服务器的计算
- 利用 Pulsar-Flink/Spark 集成集合,可以进行批量复杂地流处理计算
- 利用 Pulsar SQL 在 Pulsar 里进行 SQL 或 Presto 语言的交互式查询
同时 Pulsar 也在开发 event storage API 接口,可以方便用户直接访问 Pulsar storage,用同一套接口就可以实现搭建 Pulsar-Flink/Spark 等集成应用。
除了在计算方面跟其他系统打造集成外,Pulsar 也在 Functions 上做足了功课。接下来的版本更新中,可能会针对 Functions 更新以下功能:
- 可插拔的语言运行
- Function registry
- 共享和重用功能
- 可操作性
- 版本控制功能
- 升级/回滚
- A / B测试
- Connectors(批处理/流连接器)
为了使用户可以更容易地使用 Pulsar,也诞生了很多 managements tool。比如前期的 Pulsar Manager、Pulsarctl、Pulsar Helm Chart 等等。
更多 Pulsar 管理工具,大家可以在 StreamNative Hub 进行查看和使用:https://hub.streamnative.io。
Q & A
Q:组合 Function(Function Mesh)会添加么?
A:目前这个功能的内部实现已经有雏形了,会在接下来的时间内开源出此项目,敬请期待。
Q:消息轨迹这个功能,后续会支持吗?
A:Pulsar 可能不会直接支持消息轨迹,但可能会通过添加命令的方式去追踪实现。
Q:Presto SQL 查询 BookKeeper 里面的消息,会对正在生产消费的消息有多大性能影响?读 BookKeeper 会影响写性能吗?
A:对于正在生产的消息,不会有太大的影响。
Q:Pulsar 以后会出商业版本吗,定向支持金融企业?
A:Pulsar 目前核心的功能还是开源的状态,跟企业相关的安全特性会以插件的方式去实现。后期会出商业化版本。
总 结
本次分享,主要是由 Pulsar Summit opening keynote 内容,向大家简单概括了关于 Pulsar 的一些功能性、概念性的细节。希望通过此次分享,可以让大家更清楚的了解 Pulsar 在生产使用中的目的和效果。
如需查看更多细节,可以点击回放视频进行查看。
Apache 顶级项目 Apache Pulsar 成长回顾的更多相关文章
- 特性预览:Apache 顶级项目 Apache Pulsar 2.6.1 版本
在正式分享 2.6.1 版本更新细节之前,冉小龙首先为我们分享了两个相关 PIP 的内容. 一个是 PIP-47 中关于「基于时间来进行版本更新」的计划.该 PIP 提出后,从 2.5.0 版本到目前 ...
- Dubbo下一站:Apache顶级项目
导读: 近日,在Apache Dubbo开发者沙龙杭州站的活动中,阿里巴巴中间件技术专家曹胜利(展图)向开发者们分享了Dubbo2.7版本的规划. 本文将为你探秘 Dubbo 2.7背后的思考和实现方 ...
- 盘点 35 个 Apache 顶级项目,我拜服了…
Apache 软件基金会 Apache 软件基金会,全称:Apache Software Foundation,简称:ASF,成立于 1999 年 7 月,是目前世界上最大的最受欢迎的开源软件基金会, ...
- 我给 Apache 顶级项目提了个 Bug
这篇文章记录了给 Apache 顶级项目 - 分库分表中间件 ShardingSphere 提交 Bug 的历程. 说实话,这是一次比较曲折的 Bug 跟踪之旅.10月28日,我们在 GitHub 上 ...
- apache开源项目--Apache Drill
为了帮助企业用户寻找更为有效.加快Hadoop数据查询的方法,Apache 软件基金会发起了一项名为“Drill”的开源项目.Apache Drill 实现了 Google's Dremel. Apa ...
- 我给Apache顶级项目贡献了点源码。
这是why技术的第 91 篇原创文章 这篇文章其实并没有什么技术性的分享,从我的角度而言,更多是记录和思考. 把我对于源码和之前写的部分文章反哺给我的一些东西,带来的一点点思考分享给大家. 一行源码 ...
- Apache顶级项目 Calcite使用介绍
什么是Calcite Apache Calcite是一个动态数据管理框架,它具备很多典型数据库管理系统的功能,比如SQL解析.SQL校验.SQL查询优化.SQL生成以及数据连接查询等,但是又省略了一些 ...
- apache开源项目--Apache POI
Apache POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目.目前POI已经有了Ruby版本. 结构: HSSF - 提供读写Microsoft Excel XLS格式 ...
- apache开源项目--Apache Commons Imaging
Apache Commons Imaging 前身是 Apache Commons Sanselan ,这是一个用来读写各种图像格式的 Java 类库,包括快速解析图片的基本信息(大小.色彩空间.IC ...
随机推荐
- 11-Arrays工具类的使用
1.理解:① 定义在java.util包下.② Arrays:提供了很多操作数组的方法. 2.使用: //1.boolean equals(int[] a,int[] b):判断两个数组是否相等. i ...
- ios 生成字母加数字的随机数
文章来自:http://blog.csdn.net/baidu_25743639/article/details/73801700 近期项目第三方登录之后默认创建账号和密码,就用随机数生产,这里只需要 ...
- BiMPM:Bilateral Multi-Perspctive Matching for Natural Language Sentences
导言 本论文的工作主要是在 'matching-aggregation'的sentence matching的框架下,通过增加模型的特征(实现P与Q的双向匹配和多视角匹配),来增加NLSM(Natur ...
- 眼见为实 — CSS的overflow属性
1. overflow属性 CSS的overflow属性指定当内容溢出一个元素的框,会发生什么.举个栗子: <!DOCTYPE html> <html> <head> ...
- Python爬虫获取百度贴吧图片
#!/usr/bin/python# -*- coding: UTF-8 -*-import urllibimport re文章来源:https://www.cnblogs.com/Axi8/p/57 ...
- PyCharm 2020.1专业版安装教程及破解方法
一.安装第一步下载 版本一定得是:2020.1 其他版本下载地址:https://www.jetbrains.com/pycharm/download/other.html 安装不多说了: 二.破解 ...
- 开发读取.properties 配置文件工具类PropertiesUtil
import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.juni ...
- Apache Hudi表自动同步至阿里云数据湖分析DLA
1. 引入 Hudi 0.6.0版本之前只支持将Hudi表同步到Hive或者兼容Hive的MetaStore中,对于云上其他使用与Hive不同SQL语法MetaStore则无法支持,为解决这个问题,近 ...
- C#LeetCode刷题之#14-最长公共前缀(Longest Common Prefix)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3921 访问. 编写一个函数来查找字符串数组中的最长公共前缀. 如 ...
- C#LeetCode刷题之#169-求众数(Majority Element)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4048 访问. 给定一个大小为 n 的数组,找到其中的众数.众数是 ...