2019 年 5 月 18 日,EMQ X 团队在北京举办了主题为“基于 EMQ X 打造 5G 时代物联网(loT)平台和应用”的技术沙龙,我司 CEO 郭斯杰受邀参与本次沙龙,与 EMQ 解决方案总监 Frank Wang 合作发表了“Apache Pulsar 在 EMQ 开源物联网平台产品 ActorCloud 上的应用”主题演讲。

本次分享中,郭斯杰介绍了什么是 Pulsar、Pulsar 的核心功能和生态组件,Frank 随后介绍了开源物联⽹设备管理平台 ActorCloud 以及 Pulsar 在 ActorCloud 上的应⽤场景。

注脚

展开查看详情

1. www.emqx.io Apache Pulsar 在 EMQ 开源物联⽹网平台产品 ActorCloud 上的应⽤用 Sijie Guo & Frank Wang

2. Agenda ►Apache Pulsar 是什什么? ►Apache Pulsar 核⼼心功能 ►Apache Pulsar ⽣生态组件 ►开源物联⽹网设备管理理平台 - ActorCloud ►Apache Pulsar 在 ActorCloud 上的应⽤用

3. Agenda ►Apache Pulsar 是什什么? ►Apache Pulsar 核⼼心功能 ►Apache Pulsar ⽣生态组件 ►开源物联⽹网设备管理理平台 - ActorCloud ►Apache Pulsar 在 ActorCloud 上的应⽤用

4.什什么是 Pulsar?

5.什什么是 Pulsar? “ Flexible pub/sub messaging backed by a durable log/stream storage ”

6. 为什什么做 Pulsar? ►没有系统能解决遇到的问题和规模 ►多租户,低延时,强持久化和⼀一致性,跨地域复制,… ►已有系统存在问题 ►存储和计算紧耦合,存储模型过于依赖于⽂文件系统,扩容需要数据重新均衡 ►云原⽣生时代 ►基础架构在转型,需要⼀一个⾯面向容器器编排设计的云原⽣生系统

7. Pulsar 项⽬目状态 ►2012 - Yahoo 内部启动 ►2016 - Yahoo 开源 Pulsar ►2017 - Pulsar 加⼊入 Apache 软件基⾦金金会进⾏行行孵化 ►2018 - Pulsar 成为顶级项⽬目 ►3287 commits, 3388 stars, 122 contributors ►23 committers from 7 companies

8. Agenda ►Apache Pulsar 是什什么? ►Apache Pulsar 核⼼心功能 ►Apache Pulsar ⽣生态组件 ►开源物联⽹网设备管理理平台 - ActorCloud ►Apache Pulsar 在 ActorCloud 上的应⽤用

9. 三个不不同 ►灵活和统⼀一的消息模型 - 队列列 (Queue) + 流 (Streaming) ►云原⽣生 - 存储和计算分离 ►降维 - 从物理理分区到逻辑分⽚片

10.Pulsar 概念

11.Pulsar 多租户

12.统⼀一的消息模型

13.统⼀一的消息模型 - Key_Shared

14.例例⼦子 - 智联招聘

15.例例⼦子 - 智联招聘

16.存储计算分离 ► 独⽴立扩展 ► 灵活容错 ► 快速扩容

17.逻辑分⽚片存储 ►分区 (Partition) 是逻辑上的概念 ►分区按照时间或者⼤大⼩小切成分⽚片 (Segment) ►分⽚片被打散存放到存储节点或者⼆二级存储

18. Agenda ►Apache Pulsar 是什什么? ►Apache Pulsar 核⼼心功能 ►Apache Pulsar ⽣生态组件 ►开源物联⽹网设备管理理平台 - ActorCloud ►Apache Pulsar 在 ActorCloud 上的应⽤用

19. Pulsar ⽣生态组件 ►Built-in Schema Registry - Make your data evolvable ►Pulsar Functions - Serverless Event Streaming ►Pulsar IO - Getting data in-and-out of Pulsar ►Presto SQL - Query Pulsar Streams using SQL

20. Pulsar Schema ►Define schema for Pulsar topics ►Primitive Schema, Struct Schema (Avro, Json, Protobuf) ►Schema versioning ►Compatibility checks ►Backward, Forward, Full ►Backward_Transitive, Forward_Transitive, Full_Transitive ►Generic Schema, Schema Builder, Record Builder

21. Pulsar Schema Producer<MyClass> producer = client .newProducer(Schema.JSON(MyClass.class)) .topic("my-topic") .create(); producer.send(new MyClass(1, 2)); Consumer<MyClass> consumer = client .newConsumer(Schema.JSON(MyClass.class)) .topic("my-topic") .subscriptionName("my-subscription") .subscribe(); Message<MyClass> msg = consumer.receive();

22.Pulsar Functions

23.Pulsar Functions

24. Pulsar Functions ►Simple, easy to use ►Language Native ►Event Driven / Trigger ►Easy to deploy ►LocalRun, Process/Thread, Kubernetes, …

25. Pulsar Functions - ⽤用户场景 ►ETL ►Data Enrichment ►Data Filtering ►Routing ►…

26. Pulsar Functions - Examples ►Python def process(input): return input + '!'

27. Pulsar IO - Connectors ►Source: 从外部系统导⼊入数据到 Pulsar 中,⽐比如 Kafka, Kinesis 等 ►Sink: 将 Pulsar 的数据导出到外部系统中,⽐比如 Cassandra, HDFS 等 ►Connector 使⽤用 Pulsar Function 的运⾏行行时执⾏行行 ►Built-in Connectors ►CDC (Debezium, Canal) ►HDFS, Elastic Search, …

28. Presto SQL ►对存储在 Pulsar 上的数据 (BK或者层级存储) 进⾏行行交互式的SQL查询 ►实时数据和历史数据的交互查询:只要数据到 Pulsar 中,就可以查 ►基于 Facebook 的 Presto 进⾏行行开发 ►可以与其他数据源进⾏行行联合查询

29.Presto SQL