1、盛宇帆/StreamNative打造批打造批流融合:流融合:Pulsar Connector Pulsar Connector 的的设计、开发和使用设计、开发和使用批流融合的批流融合的前世今生前世今生#1FlinkFlink 批流批流融合融合 APIAPI#2Pulsar ConPulsar Con-nectornector 设计设计#3使用使用 PulsarPulsarConnectorConnector#4#1#1批流融合的前世今生批流融合的前世今生批流分离:Lambda 架构NoSQLIOTLogsERPDBMS原始数据流查询流处理增量视图批次预计算实时结果批量结果数据集批量结果流批So
2、urce(1)Source(2)map(1)map(2)window(1)window(2)33172929171414291414W(33)W(17)W(17)A|30B|73C|33D|18E|31F|15G|91H|94K|77生成水位线L|35N|39O|97M|89I|18Q|23T|99S|9733881795批流融合:更精确的流批流融合:更精确的流算子状态检查点SourceSourceKeyByKeyByMapMapSink批流融合:批为有界的流Streaming RuntimeDataStream APIDataSet APIBatch LibrariesTable API/S
3、QLStreaming LibrariesFlink API 一览(1.9 之前)Streaming Operators/DAGDataStream APIStateful FunctionsTable API/SQLLibraries(e.g.,ML)Streaming RuntimeLibraries(e.g.,CEP)Flink API 一览o 存储 Pulsar 和 BK 的元数据o 服务发现o Brokerso 处理消息分发和连接o 无状态但有缓存o 自动负载均衡o Topic 由 Segment 组成o Bookieso 存储消息和游标o 消息按照 Segment 和Ledgers
4、 分组o 一个 Ledger 由一组Bookie 实例构成元数据、服务发现存储消息元数据、服务发现卸载至层级存储Pulsar-批流融合的存储架构#2 2Flink Flink 批流融合批流融合 APIAPIFLIP-27 简介发现并分配 Split 给 Reader批:执行一次,流:周期执行EnumeratorEnumerator基于 Split 去读取数据ReaderReader定义了需要消费的数据的元信息例:文件信息,Topic 信息SplitSplitFLIP-27 基本模型Source(类似工厂)EnumeratorReaderReader创建创建FLIP-27 执行流程Source(
5、类似工厂)EnumeratorReaderReader创建创建发现并分配 Split,发送全局水位线申请新的 Split下游算子FLIP-27 执行流程Source(类似工厂)EnumeratorReaderReader创建创建发现并分配 Split,发送全局水位线申请新的 Split下游算子发送特定的 SourceEvent回应特定的 SourceEventFLIP-27 执行流程Source(类似工厂)EnumeratorReaderReader创建创建发现并分配 Split,发送全局水位线申请新的 Split下游算子发送特定的 SourceEvent回应特定的 SourceEvent触发
6、检查点检查点屏障FLIP-27 执行流程#3 3Pulsar ConnectorPulsar Connector 设计设计Topic PartitionTopic名称分区IDTopic Range开始结束Pulsar Split 设计Topic PartitionTopic名称分区IDTopic Range开始结束StartCursorStopCursorPulsar Split 设计Topic PartitionTopic名称分区IDTopic Range开始结束StartCursorStopCursorMessageIDTxnIDPulsar Partition SplitPulsar S