1、周煜敏戴尔科技集团高级软件工程师Pravega Flink connector Table API 进阶功能探秘Deep dive into the extended Table API usage of Pravega Flink connector动态表与流表二相性动态表与流表二相性#1#1Debezium支持支持#2#2Pravega Schema registry#3#3Catalog支持支持#4#4Demo#5#5#1流表二象性流表二象性Dynamic table and stream-table duality关系代数关系代数/SQL流处理流处理关系(或表)是有界(多)元组集合流是
2、一个无限元组序列对批数据(例如关系数据库中的表)执行的查询可以访问完整的输入数据流式查询在启动时不能访问所有数据,必须“等待”数据流入批处理查询在产生固定大小的结果后终止流查询不断地根据接收到的记录更新其结果,并且始终不会结束传统关系查询与流处理比较传统关系查询与流处理比较表体现数据在某个时间点的视图流体现数据在时间维度上的变化流流-表表连续查询连续查询Update动态表动态表-流流(Changelog)RetractUpsertINSERTINSERT+DELETEUPSERT+DELETEAppend-only流-表表-流在时间维度上,修改表日志流的聚合结果成为表在时间维度上,表的动态的修
3、改记录成为流流表二象性流表二象性#2Debezium支持支持Pravega Debezium supportCDC/Debezium简介简介Change Data Capture,确定和跟踪数据库中的数据变更以采取行动基于 Kafka connect 实现,将数据库行级变更转换为事件流的分布式平台CDCDebezium的三种部署模式的三种部署模式#1将 Debezium 作为依赖库嵌入 Java 程序调用利用 Kafka Connect 部署启动 Debezium Server,利用 source connector 链接下游消息系统#2#3https:/ PravegaPravega 写客户
4、端写客户端01100000Txn segments01110110 01000110 01100000s1s201111000Regular writeTransactional write#1普通写客户端writer.writeEvent(event)事务性写客户端Transaction txn=txnWriter.beginTxn()txn.writeEvent(event)txn.flush()mit()txn.abort()#2Debezium与与Pravega 集成集成#1普通写客户端集成事务性写客户端集成#2以单独event方式顺序写入一个 debezium batch 以事务写入
5、,当batch complete 时 commit Pravega transaction,确保仅一次语义TXN-2TXN-1()配置默认值详情debezium.sink.type设置为 pravegadebezium.sink.pravega.controller.uri tcp:/localhost:9090Pravega 集群的 controller 地址debezium.sink.pravega.scopePravega scope 名称debezium.sink.pravega.transactionfalse是否使用事务性写入模式Pravega Flink Connector 集成
6、集成基于现有 FLIP-95 Table Source API 以及 SourceFunction 实现Insert(+I,RowData)Update(-U,OldData)(+U,NewData)Issue 530:额外支持反序列化成多个 event 的功能Issue 494:FLIP-107 metadata 在 table source 上的支持为保持 Pravega 序列化器的互操作性,重构反序列化链路#3Pravega Schema RegistryWriterReadersPravega StreamReadersRaw bytesWriter“type”:“record”,“n