- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
2019-05-18 EMQ Meetup - Pulsar
展开查看详情
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