Apache Pulsar晋升顶级项目,打造实时时代的数据中台

2018 年 9 月 26 日 AI前线
来源 | Apache官方消息,Pulsar社区
编辑 | Natalie
AI 前线导读:昨日,Apache 软件基金会宣布 Pulsar 正式晋升成为顶级项目。Pulsar 是一个集消息、存储和轻量化函数式计算为一体的流原生数据平台,代表了消息系统和流数据平台的最新发展水平。

更多优质内容请关注微信公众号“AI 前线”(ID:ai-front)

Pulsar 项目于 2012 年在 Yahoo 内部启动,最早的目标是在 Yahoo 内部构架一套多租户、跨机房、可扩展和高可用的统一的消息平台,用于支持 Yahoo 内部不同的使用场景。在经历了三四年生产线的磨砺,Pulsar 成功地支撑了 Yahoo 内部的许多 mission-criticial 的应用,比如 Yahoo Finance,Yahoo Mail,Yahoo Sports 以及相应的广告平台。Yahoo 于 2016 年底将 Pulsar 开源,并于 2017 年六月正式将其捐献给 Apache 软件基金会进行孵化。

Apache Pulsar,相对其他传统消息中间件系统,有着根本性的不同。这些不同可以囊括为以下几点:

  • 在消息模型和 API 层面上,Pulsar 基于日志这个存储抽象,统一了消息队列(Queue)和流处理(Streaming)这两种经典的消息中间件应用场景。用户只需要使用一套系统,通过不同的订阅(Subscription)模式,即可支持不同的应用场景,从根本上打通了应用和服务之间的数据孤岛,从而实现真正意义上的数据”中台“。

  • 在架构层面上,Pulsar 使用了最前沿的将计算和存储相互分离的思路,将传统的消息中继(Broker)和消息存储(Storage)分开,从而将原有的消息中继(Broker)变成一层无状态化的服务层。将 Broker 变成无状态化之后,Broker 和存储可以相互独立扩展,同时 Broker 的失效恢复可以在极短的时间内完成,从而大大提高了服务的可用性。而且这种分层架构也让 Pulsar 可以很容易部署在 Kubernetes 这样的容器编排环境里面,最高效地使用云原生的基础架构。

  • 在存储层面上,Pulsar 使用 Apache BookKeeper 作为其日志存储系统,将存储粒度从传统的分区粒度,拉低到了分片(Segment)粒度。一旦存储粒度被细分之后,分区不再是物理绑定的了。分区更多的是逻辑层面上的概念,一个分区可以被切分成细粒度的分片,均匀打散到整个集群中;从而极大程度上最大化了数据放置的可能性,也降低了进行集群扩容、故障恢复等操作带来的复杂性。

也正是因为 Pulsar 在 API 模型、架构设计和存储设计上最有独天得厚的优越性,使得 Pulsar 在进行 Apache 孵化后,可以从最开始的 Pub-Sub 消息中间件快速迭代演化成为了流原生的数据平台。Pulsar 对于流原生的支持主要包括以下重要的 Feature。

Pulsar Functions 和 Pulsar IO

首先是 Pulsar Functions,一套基于无服务器化(Serverless)的轻量级计算框架。这套计算框架为数据科学家提供了最为简便的方式进行流计算逻辑的编写。学习成本基本为零,只要能写 Java 或者 Python 的函数,就可以编写在 Pulsar 进行流计算的逻辑。

基于 Pulsar Functions 的架构和 serverless 的理念,实现了一套无服务器化的连接器(Connectors)框架 Pulsar IO。Pulsar IO 提供了简化了 Pulsar 和流生态环境的链接。用户不需要编写任何的代码,只需要准备一个简单的配置文件。并且提供了对连接器的自动的容错管理,负载均衡,随着负载自动伸缩扩容等,极其简化了用户的使用。

目前已经提供的连接器包括:Kafka,Kinesis,RabbitMQ,Elastic-search,HDFS,Aerospike,JDBC 等。

层级存储

相比于其他消息 / 流系统,Apache Pulsar 最大的优势是它基于 Apache BookKeeper 的分块存储(Segment Storage)架构。 Pulsar 通过提供层级存储(Tiered Storage)的方式来解决容量和开销的权衡。

层级存储通过将老的数据分块从 BookKeeper 卸载到更廉价的存储系统(比如 AWS S3, Google GCS,Azure 和 HDFS)中,从真正意义上把 Pulsar 变成了真正的无限数据流(Infinite Streams)存储。终端用户不需要知道数据是存储在 BookKeeper 中,还是存储在更廉价的存储系统中,整个流程对用户是透明的。这也意味着用户主要编写一套代码即可同时消费最新的流数据和历史数据。目前 2.1 版本只支持 S3。在将 release 的 2.2 版本中,将支持更多的云存储,比如 Google GCS,Azure Blobstore 等。

状态函数

流计算中最充满挑战的一个问题是解决状态(State)的管理。Pulsar 引入了状态(State)API,借助底层的 BookKeeper 提供状态存储,简化了流计算中的状态的管理。通过这套 API, 不仅可以支持 Pulsar Functions 自身的状态管理问题;而且为开发者编写原生流处理的逻辑,提供了便捷。这套状态 API 跟 Apache BookKeeper 的表服务进行了深入的整合。目前支持简单的 key/value 操作以及对于计数支持的 inc 操作。

Schema

Pulsar 引入了对 Schema 的原生支持。这意味着用户可以在创建 Pulsar 主题的时候定义消息相应的 Schema,然后 Pulsar 会根据指定的 Schema 保证发布消息的完整性。

Pulsar 不仅支持 String、Bytes、JSON 三种内置 Schema,还原生支持 Avro 和 Protobuf 这两种类型。Schema 将 Pulsar 从一个只支持非结构化数据的消息系统变成了也支持结构化数据的流数据平台。Schema 将作为最重要的基石组件用来实现 Pulsar SQL,完成对流数据的可查询化。

Pulsar SQL

发布的 2.2 版本中,Pulsar 将会引入了 SQL,方便数据科学家对于存储在 Pulsar 里面数据进行 SQL 查询和分析。Pulsar SQL 借助 Presto,为用途提供了高效可扩展的查询。这种高效的查询,主要得益于 Pulsar 底层的存储系统 Apache BookKeeper。Pulsar 的数据会根据配置均衡的存储在多个存储节点上,这使得 Pulsar SQL 可以通过 BookKeeper 的接口,并发访问多个存储节点。

Pulsar 的应用

在 Pulsar 从开源到毕业的这段时间,吸引了不少国内外用户。目前 Pulsar 的成熟用户包括 MercadoLibre, Oath, One Click Retail, STICorp, TaxiStartup, Yahoo Japan Corporation 和智联招聘等。

智联招聘于 2017 年初开始计划搭建统一的消息平台,智联招聘的原系统在 RabbitMQ 之上通过一层服务封装来实现底层存储的资源分配、单队列的扩展能力、延时消息、定时消息等特性。在智联招聘一年多的实践中,业务逐渐对消息回溯、数据容灾等提出了更高的要求。因此于 2018 年年中基于 Apache Pulsar 重新设计和搭建了统一的消息平台。

Apache 官方消息参考:

http://globenewswire.com/news-release/2018/09/25/1575494/0/en/The-Apache-Software-Foundation-Announces-Apache-Pulsar-as-a-Top-Level-Project.html

PS:在 Pulsar 毕业之际,Pulsar 社区的 PMC 成员,联合智联和计算所的贡献者一起,将于 10 月 20 日在中科院计算所举办 Apache Pulsar Meetup·北京站的活动,感兴趣的同学可以戳【阅读原文】报名。


如果你喜欢这篇文章,或希望看到更多类似优质报道,记得给我留言和点赞哦!

登录查看更多
3

相关内容

FPGA加速系统开发工具设计:综述与实践
专知会员服务
63+阅读 · 2020年6月24日
【2020新书】Kafka实战:Kafka in Action,209页pdf
专知会员服务
65+阅读 · 2020年3月9日
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
阿里巴巴达摩院发布「2020十大科技趋势」
专知会员服务
105+阅读 · 2020年1月2日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
硅谷的“中台论”与中国的“中台论”
AI前线
4+阅读 · 2019年9月21日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
SLA 99.99%以上!饿了么实时计算平台3年演进历程
51CTO博客
11+阅读 · 2018年4月10日
消息队列技术点梳理(思维导图版)
架构文摘
3+阅读 · 2018年4月3日
【AI说】揭秘京东实时数据仓库背后的神秘力量—JDQ
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
Arxiv
9+阅读 · 2019年4月19日
Arxiv
3+阅读 · 2018年10月25日
Arxiv
26+阅读 · 2018年9月21日
Arxiv
12+阅读 · 2018年9月5日
Arxiv
7+阅读 · 2018年1月24日
VIP会员
相关资讯
硅谷的“中台论”与中国的“中台论”
AI前线
4+阅读 · 2019年9月21日
在K8S上运行Kafka合适吗?会遇到哪些陷阱?
DBAplus社群
9+阅读 · 2019年9月4日
浅谈 Kubernetes 在生产环境中的架构
DevOps时代
11+阅读 · 2019年5月8日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
SLA 99.99%以上!饿了么实时计算平台3年演进历程
51CTO博客
11+阅读 · 2018年4月10日
消息队列技术点梳理(思维导图版)
架构文摘
3+阅读 · 2018年4月3日
【AI说】揭秘京东实时数据仓库背后的神秘力量—JDQ
开源巨献:阿里巴巴最热门29款开源项目
算法与数据结构
5+阅读 · 2017年7月14日
相关论文
Arxiv
9+阅读 · 2019年4月19日
Arxiv
3+阅读 · 2018年10月25日
Arxiv
26+阅读 · 2018年9月21日
Arxiv
12+阅读 · 2018年9月5日
Arxiv
7+阅读 · 2018年1月24日
Top
微信扫码咨询专知VIP会员