1、大数据计算架构峰会DataFunSummit2022.04.23(周六)09:0017:202021AkulakuAkulaku智能智能计算计算系统及系统及应用应用DataFunSummit黄泓 资深算法开发工程师2022|CONTENTS目录场景与需求Akulak业务和相关背景01难点智能计算系统实现的难点02案例与架构智能计算系统的实现细节03总结我们学到了什么04DataFunSummit|Subject01背景Akulaku的场景与需求DataFunSummit|Akulaku的场景与需求DataFunSummit|Akulaku是一家主打海外市场的互联网金融服务提供者,服务内容包括网
2、上购物和分期付款,现金贷,保险等等。主要的应用场景包括金融风控,电商智能客服以及电商推荐等等总体架构DataFunSummit|对接业务的上层应用以及各层服务之间的关系如下Subject02难点智能计算系统构建的难点DataFunSummit|核心难点DataFunSummit|线下分析 线上部署高吞吐量低延时时效性好,尽可能快地反映数据变更 逻辑一致线下分析和线上部署的逻辑需要完全一致特征和模型的类别DataFunSummit|时间窗口类 群组关联类举例:近X天的XX个数举例:近X天同一团伙所有成员的订单个数 关联关系类K度图查询,特定子图模式 机器学习模型 序列模型举例:xgboost举例
3、:TCN 深度NLP模型BERTSubject03架构与案例智能计算系统的实现DataFunSummit|特征的计算:两种计算方式DataFunSummit|场景驱动 数据驱动业务调用环节驱动,调用时计算结果底层数据驱动,数据变更时计算,调用和计算解耦案例一:时间窗口DataFunSummit|需求:近XX天的订单个数 场景驱动?要求实时更新,时间窗口实时滑动下单环节延时不能超过200ms后续会有复杂的关联需求,比如“团伙内近3天订单个数”一个简单的想法:直接在关系型数据库里面怼sql问题:延时不可控,在极端情况下有可能超过200ms 数据驱动?尝试用Flink计算引擎实现滑动窗口的逻辑Sel
4、ect count(*)from orderswhere create_time=current_time-3*24*3600*1000 案例一:时间窗口(Flink的滑动窗口?)DataFunSummit|Flink滑动窗口 问题:步长窗口大小步长窗口大小在滑动窗口操作中,Flink会生成 窗口大小/步长 个窗口如果 步长窗口大小,窗口对象会过多,导致过慢或者OOMFlink的滑动窗口并不能真正的滑动 社区进展:无案例一:时间窗口(基于Flink CDC的方案)DataFunSummit|基于变更的数据计算(1)使用中间存储保存窗口表,对于新进入的数据,只维护近X天的数据(2)Flink c
5、dc捕捉窗口表的变更,计算出最终结果案例一:时间窗口(Flink SQL的方案)DataFunSummit|Flink CDC的方案(1)Flink cdc有sql支持,但是sql并不直观(2)必须依赖中间存储,吞吐量和灵活性不够 真正滑动的窗口复用Flink的高可用和状态管理,同时实现灵活的入窗出窗操作 思考的基点:Dynamic Table案例一:时间窗口(Flink SQL的方案)DataFunSummit|起点:流式去重假如有如下数据流,每个产品product_id的我们要获取每个产品最新的价格(product_id:1,price:2 ,update_time:100L)(produ
6、ct_id:1,price:3 ,update_time:200L)(product_id:2,price:3 ,update_time:1000L)(product_id:2,price:4 ,update_time:1201L)(product_id:2,price:3.5 ,update_time:1100L)SELECT*FROM(SELECT product_id,price,ROW_NUMBER()OVER(PARTITION BY product_idORDER BY update_time DESC)AS row_numFROM product)WHERE row_num=1案