查看原文
其他

[Recap] Apache Pulsar Meetup | 深圳站

Growth StreamNative 2020-01-08
作者:Susan

编辑:Susan + Anonymitaet



2019 年 6 月 29 日, Apache Pulsar 开启中国之旅第四站,在深圳成功举办了第一场 Apache Pulsar Meetup。本次分享的主要内容为:


  • Apache Pulsar 简介和用户案例 - 郭斯杰

  • Apache Pulsar 2.4.0 新功能解析 - 翟佳

  • 腾讯基于 Flink 构建实时流计算平台的实践 - 杨华

  • 基于 Apache Pulsar 和 Apache Spark 打造批流融合的数据存储和分析平台 - 申毅杰

  • Pulsar IO 运行原理与周边生态 - 俄广宁

  • Go Functions 的设计与实现 - 冉小龙


Pulsar 技术爱好者们参与了此次干货满满的分享,进行了热烈的讨论,以下是本次深圳 meetup 内容导航。



Apache Pulsar 简介与用户案例


郭斯杰

Apache Pulsar 和 Apache BookKeeper PMC 和 Committer



摘要:斯杰幽默风趣地讲解了 Apache Pulsar 特性及其发展历史和现状,介绍 Pulsar 用户案例,包括 Yahoo、Twitter、智联招聘、个推。


演讲 PPT,请参阅 Apache Pulsar 简介和用户案例 - 郭斯杰

https://www.slidestalk.com/s/1Pulsar87289



Apache Pulsar 2.4.0 新功能解析


翟佳

Apache Pulsar 和 Apache BookKeeper PMC 和 Committer



摘要:介绍 Apache Pulsar 版本动态、组件概览,重点介绍 Apache Pulsar 2.4.0 新版本特性。



Pulsar 2.4.0 Features:

  • Key-Shared 订阅模式

  • Delayed Message

  • Replicated subscriptions

  • Kerberos Authentication

  • Go Functions

  • Connectors

  • Others


翟佳首先介绍了 Pulsar 新版本的 Key-Shared 订阅模式,可实现 partition 中 key 相同的消息最终交给同一个 consumer,增加了 consumer 端的并发度同时保证了顺序性。


Delayed Message 特性可设置消息在什么时刻或多久以后发送到 consumer 端。


Replicated 订阅和异地多备相关,用户只需要简单配置便可实现多个机房间跨地域复制。


权限认证方面新支持 Kerberos 认证方式,帮助用户统一认证管理。


Pulsar 融入了一种轻量级的计算方式 Pulsar Functions,版本 2.4.0 中实现了更多关于 Go 方面的支持,在之后的分享 Go Functions 的设计与实现中有详细介绍。


在新版本中增加了更多 IO Connector 支持。本次分享还介绍了很多其他新特性,详情请参阅活动视频和演讲 PPT。


演讲 PPT,请参阅 Apache Pulsar 2.4.0 新功能解析 - 翟佳

https://www.slidestalk.com/s/2Pulsar24072173


视频回顾,请查看

 https://v.qq.com/x/page/k0893565efo.html


腾讯基于 Flink 构建实时流计算平台的实践


杨华

腾讯大数据高级工程师



摘要:分享 Flink 计算框架在腾讯的实践与现状、围绕 Flink 打造的一体化实时计算平台 Oceanus、Flink 的改进与优化、Flink 与 Pulsar 的协作等。


演讲概要如下:


  • Flink 简介

  • Flink 在腾讯实时计算概况

  • 针对 Flink 的扩展与优化

  • Pulsar 与 Flink 的整合


Apache Flink 是一个开源的流处理框架,适用于分布式、高性能、高可用以及有正确性要求的数据流应用。杨华首先简要介绍了 Flink 及其发展历史、开发语言和设计理念等,之后展示了 Flink 现在实行的组件栈和未来技术重构后的预计架构。


杨华还介绍了 Flink 在腾讯的演进历程和 Flink 实时计算在各个产品的应用状况和规模,以 Oceanus 平台为例,介绍了 Flink 在平台整体的技术架构和功能应用。分享还包括对 Flink 社区版本的优化,包括 Flink Web UI 重构、JobManager Failover 优化、Increment Window 增量窗口的实现、FLIP-44 特性、LocalKeyBy 的四种应用等。



Pulsar 与 Flink 的整合。Pulsar 在数据层面上同时支持流和批,而 Flink 作为计算引擎致力于批流融合。目前 Pulsar 社区已提供了相应的 Connecter 为和 Flink 集成提供支持。


杨华详细介绍了目前已实现的衔接方式,如 Flink Pulsar streaming connecter 的实现示例、Flink Pulsar batch sink 等。之后,杨华介绍了未来 Pulsar 与 Flink 的整合方向,如在 batch source 方面以并发形式读取分片、Bypass Brokers、直接访问分层存储、scan trimmer 等;在 schema 方面进行集成,包括 schema evolution 和多版本的整合;提供 BookKeeperStateBackend,解决数据访问问题,将 state 以分片方式储存在 BookKeeper 中。


演讲 PPT,请参阅腾讯基于 Flink 构建实时流计算平台的实践 - 杨华

https://www.slidestalk.com/s/3Flink46849


视频回顾,请查看

https://v.qq.com/x/page/y0893jeudwt.html


基于 Apache Pulsar 和 Apache Spark 打造批流融合的数据存储和分析平台


申毅杰

Apache Pulsar/Spark Contributor、开源爱好者



摘要:分享基于 Apache Pulsar 和 Apache Spark 打造批流融合的数据存储和分析平台,包括使用 Reader、Consumer、Segment 接口高效读取 Pulsar 中的流数据;使用基于 Topic、PartitionedTopic 将处理结果持久化到 Pulsar 中;使用 Pulsar Schema 实现便捷的数据查询与分析。


Spark 2.2.0 推出 Structured Streaming 统一了批、流作业的 API,相应的,Flink 也具备批流联合查询的能力。然而为了构建批流融合的数据存储分析平台,单靠处理层统一的 API 是不够的,传统流数据平台在存储能力、扩展性、对容器化架构的适应能力上都是较差的,不适合存储全量的流数据。


本次分享中,毅杰首先针对 Pulsar 的计算(消息服务)存储分离的架构、基于分片的存储和层级式存储这三点区别于传统消息队列、实时数据管道的特性进行了简要说明。随后介绍了 Spark Pulsar Connector 的使用方式。最后,分析了使用 Spark Datasource API 实现 Spark Pulsar Connector 的具体实现细节。


演讲 PPT,请参阅基于 Apache Pulsar 和 Apache Spark 打造批流融合的数据存储和分析平台 - 申毅杰

https://www.slidestalk.com/s/4PulsarSpark27059


Pulsar IO 运行原理与周边生态


俄广宁

Apache Pulsar Contributor、Python 语言爱好者



摘要:Puslar IO 是 Pulsar 与外部系统集成的一个组件,主要由 Source 和 Sink 两部分组成。本次分享内容包括 Source、Sink 与 Function Worker 的关系,对 Pub/Sub 的封装使用、对 Schema 的应用,以及 Pulsar IO 当前的生态。


Source 负责从外部系统获取数据,Sink 负责将数据传递到外部系统。Function Worker 承载了 Pulsar 的 Serverless,用户可以使用 Python、Go、Java 开发简单的函数,提交给 Function Worker 运行。Source、Sink 与 Function 可以基于线程、进程和 k8s 三种模式在 Function Worker 上运行。



广宁分别介绍了 Source 和 Sink 组件,包括如何启动、初始化、以及其中数据的流动。Pulsar 是一个基于 Pub/Sub 的系统,PulsarSink 中封装了 Producer ,PulsarSource 中封装了 Consumer,广宁主要介绍了其中的消息路由和 Schema 应用。


总结来说,Source 和 Sink 是对 Pub/Sub 模式的一种封装重用。Source、Sink、Function 运行在 Function worker 上。使用 pulsar-admin source 或者 sink 时,启动的是用户自定义的 Source 或者 Sink。


Source 是由用户自定义 Source、IdentityFunction、PulsarSink 组成,负责从外部系统同步数据。Sink 是由用户自定义 Sink、PulsarSource、IdentityFunction 组成,负责输出数据到外部系统。PulsarSource 封装了 Consumer,负责从 Topic 接收数据。PulsarSink 封装了 Producer,负责发送数据到 Topic 中。Consumer 和 Producer 间可使用 Schema。PulsarSink 中的 Producer 发送数据使用了自定义的路由策略,PulsarSource 中的 Consumer 默认使用 Shared 订阅模式。


最后,广宁介绍了 Pulsar IO 的生态,分享了如何开发和调试 Source 或 Sink,以及 Source 和 Sink 常用命令。


演讲 PPT,请参阅 Pulsar IO 运行原理与周边生态 - 俄广宁

https://www.slidestalk.com/s/5PulsarIO35107


Go Functions 的设计与实现


冉小龙

Apache Pulsar Contributor、Go 语言爱好者



摘要:Pulsar Functions 是消息和计算平台在 Serverless 方向的融合和创新,此次分享包括 Pulsar Functions 的设计和工作原理;GO Functions 的实现方式、现状及未来规划。


演讲概要如下:


  • Pulsar Function 介绍

  • 简介

  • 执行流程

  • 实现

  • Go Function 的设计

  • Go Function 的实现

  • Go Function 使用示例

  • Go Function Debug

  • Pulsar Function Runtime

  • Pulsar Function Worker


Pulsar Functions 是一个轻量级的计算框架,像 AWS 的 lambda、Google Cloud 的 Functions 一样,Pulsar Functions 可以给用户提供一个部署简单、运维简单、API 简单的 FASS(Function as a service)平台。



随着 Go 社区的不断壮大,用户对 Go Function 的需求明显增加。Pulsar Functions 的架构采用了 protobuf 的协议将服务端与客户端进行了解耦,这为多语言的支持提供了可能。


Go Function 是对 Pulsar Function 的丰富,在设计理念上采用了与 Java Function 和 Python Function 不同的实现方式,结合 Go 语言本身的特性,使用了 SDK 的形式提供给用户。


虽然在实现方式上有所不同,为了减少用户学习成本,Go Function 与 Java Function 和 Python Function 使用形式相同,将 function 本身的操作以及 Debug 相关的命令集成到了 pulsar admin 中,方便用户统一处理。


演讲 PPT,请参阅 Go Functions 的设计与实现 - 冉小龙

https://www.slidestalk.com/s/6GoFunctions54623


Pulsar Function 系列教程,请参阅:


更多关于 Apache Pulsar 的动态和干货分享,欢迎关注 StreamNative 公众号。


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存