《5-1 超大规模图计算引擎在在线零售的应用.pdf》由会员分享,可在线阅读,更多相关《5-1 超大规模图计算引擎在在线零售的应用.pdf(21页珍藏版)》请在三个皮匠报告上搜索。
1、超大规模图计算引擎阿里巴巴 技术专家谷川Contents目录01背景介绍02Graph Compute 的能力及实现03周边系统建设04使用案例|Graph Compute 简介自助接入,数据托管、智能运维图存储与检索千亿节点,万亿边全量/单表千万qps秒级实时更新支持自研图查询语言&gremlin标准知识图谱管理系统认知图谱:用户实时行为基础数据用户全网曝光数据用户/商品/店铺/CPV关系数据OneID&Gprofile电商/全网/视频知识图谱应用场景:搜推广、安全TPPDIIWSearchGraphCompute ProxyTPPMainseCommonGraphCompute Searc
2、herZone1Zone2ZoneN全量/批量:ODPS实时增量:SwiftAuto-umarsAliyunConsoleAlibabaConsole3|业务场景图谱使用GraphCompute认知图谱生产2w+表数据用户表商品表品牌表i2is2i交易表c2i产品表SPU表演员表电影表主演表城市表推荐场景1广告场景搜索场景1Youku推荐场景用户认知图谱商品认知图谱用户实时行为表视频知识图谱全网知识图谱类目表特产表数据量:千亿访问量:千万qps平均延时:1.5ms场景性能数据量:千亿访问量:百万qps平均延时:1.8ms|Graph Compute的能力及实现2背景介绍1周边系统建设3Cont
3、entl 系统特点l 业务场景l 原生gremlin引擎l 全异步化架构业务介绍4|Gremlin是什么?6to graph/查询marko创作的软件的属性g.E(1).hasLabel(”created).inV().hasLabel(”software)=label:software,lang:java,name:lop,pk:3/查询marko创作的软件并返回路径信息g.V(“1”).hasLabel(“person”).outE().hasLabel(”created“).inV().hasLabel(“software”).path()/使用属性lang=java来查询软件g.V()
4、.by(software_index).indexQuery(match:lang:java)=label:software,lang:java,name:lop,pk:3=label:software,lang:java,name:ripple,pk:5高级使用特性随机游走 sample嵌套遍历 where()多路遍历 union局部变量 withSack/sack|Gremlin引擎-业界实现7TitanAzure CosmosAWS NeptuneIBM GraphBaidu HugeGraph华为EYWAGremlin ServerExternal Storage低效存储无法掌控计算下
5、沉难Java语言栈,GC适合分析型场景Gremlin100个算子嵌套Gremlin很难下沉|ParseParse&ValidateCacheExpressionPredicateStepCavaUtilitySerializeStrategyvertex,edgetraversermap,set StructureSession pool谓词下沉Optimizer路径优化列裁剪多表操作下沉Executor并行&异步框架ExecutorStrategyCacheKVStorageKKV 倒排向量原生Gremlin引擎Auto UmarsOPS|全异步化架构体系Local SSDLocal Opt
6、anePanguNVME更高IOPS存储计算分离高性能-kv/kkv/倒排/向量多种高效索引组织-io_uring及多级cache的磁盘访问模型高稳定-混合协程全异步框架-表切换磁盘cache渐进预热自适应-根据表流量周期,自适应选择存储介质降低至原先的1/81/9,异常抖动降级QPS趋近于0GremlinHybrid CoroutineAsync PrimitiveLazy(c+20 coroutine)UthreadLinux io_uringfuture litestorage|Graph Compute的能力及实现背景介绍1周边系统建设Contentl 系统特点l 业务场景l 原生gr
7、emlin引擎l 全异步化架构业务介绍423l 智能管控系统l 离线系统|健康分管理数据配置中心回流触发中心索引构建中心索引发布管理数据切换中心服务元信息管理中心服务变更流程管理事件处理中心数据优化权限管理监控中心数据回流状态服务API GatewayAutoUmars离线计算离线存储实时构建消息队列服务发现容器服务二层调度数据库监控烽火台外部依赖组件数据托管服务托管数据运营管控系统主体服务栈|Minimise!,s,#!+!+Bs+!+#+$#!%#!.0,1,!=!,!#!#!,#!,!=!,0箭头表明数据迁移的方向,颜色越深表示某一维资源利用率越高迁移代价裁撤选项迁移次数最小资源目标智能
8、调度背景描述在给定容器规模和规格下如何调整数据分布做到负载均衡、业务隔离解决方案提供什么样的容器规格能够用最少的资源承担最多的业务解决方案带约束运筹优化问题业务需求抽象成约束条件|事件源1事件源2事件源3一级(全局)事件中心事件收集&存储事件分析事件分发二级(管控域)事件中心一级管控事件分析管控行为触发OOM自愈异常机器迁移内存加载优化自动扩容异常根因分析SuezWorkerBS Worker背景描述大数据规模下如何降低人工运维参与的时间系统复杂度不断上升的背景下如何使得分析解决问题成本降低解决方案人工经验到自动化规则的沉淀,根因分析的引入利用事件驱动的机制来提高自动化运维水平智能自愈|离线处
9、理系统稳定性保障数据 更新/切换 不影响在线查询数据多版本支持回滚TTL数据支持Schema 变更多索引类型支持内置文本检索(倒排/正排/Summary)/向量检索/时序数据地理位置检索/KV索引/图关系型索引分布式任务管理和优化支持节点的动态扩缩容、长尾节点的自动化处理支持DAG图化任务调度能力1T 252亿doc 83min 500w doc/s|4Contentl 电商关系图谱l 图在风控场景的使用l 最优路径规划l 知识图谱推理l Graph EmbeddingGraph Compute的能力及实现背景介绍1周边系统建设l 系统特点l 业务场景l 原生gremlin引擎l 全异步化架构
10、业务介绍2l 智能管控系统l 离线系统3|电商关系图谱?!?!?!?!?!?!?!?l 用户偏好l 模型特征l 购买过滤.关系描述数据量全网购买关系*87亿全网10天点击关系*15亿90天收藏数据*8亿全网购物车*37亿|在风控场景的使用newuser1medium1newuser2belongedbelongedregisteredregisteredoutE()filter(user_id!=1 ANDabs(registration_time-70)10)filter(user_id!=1 ANDabs(registration_time-70
11、)10)user_id=1,registration_time=70user_id=2,registration_time=75outE()outE()原有风控方案基于Graph Compute 方案运维难度需要维护 redis+mysql+neo4j公有云简单管理云产品特征更新风控特征更新迭代周期长(周级别)需要修改实时计算任务(Flink/Spark)基于gremlin 图直接查询/更新风控特征新增特征同时需要修改实时计算任务和后续存储,只能支持短时间周期特征直接编写新gremlin 查询,通过MC支持长时间周期特征风控特征验证涉及模块代码修改,
12、验证周期长基于gremlin 图查询,直接进行线上验证|最优路径规划找到出港航班多的 top 10 邻居城市g(flight_route_plan).V(LON-2020-05-01).hasLabel(city_date).outE(city_fly).order().by(outE().count(),decr).range(0,10).values(skey”)将这些城市做为航班连接图的顶点,去找大城市到目的地最快的一转,再将结果做为整个路线规划的第二转城市g(“flight_route_plan”).V(这里放前面查到的结点).hasLabel(city_date).outE(city
13、_fly).not(has(arr_city,LON).sack(Operator.sum).by(min_duration).as(transfer1).outE(city_fly_2).sack(Operator.sum).by(duration).has(arr_city,BJS).sack().order().by(Order.incr).select(transfer1).dedup().by(skey).range(0,10).values(skey).aggregate(transfer_cities2).fold()最后PushDownStrategy做side_effect下
14、沉,将整个一转二转作为输入条件连起来查,找到最快的航班组合g(“flight_route_plan”).withStrategies(PushDownStrategy(“transfer_cities2”).withSack(supplier(normal,integer,“0”).上面查一转的语句.V(“LON-2020-05-01”).hasLabel(“city_date”)略userquery婴儿奶粉concept孕早期饮食item辅食concept孕早期保健食品/书籍concept孕早期教育item婴儿书籍lifestage孕早期preference婴幼儿婴幼儿用品用品recentqueryitemrelateditemsubconceptrelatedconceptuserpayuserclicklifestagepreferenceRanksubconceptsubconceptsimconceptrelatedconceptrelatedconceptsubconcept3度查询rt:6ms知识图谱推理|Graph Embedding 全量模型训练在线推理增量模型训练TF OPNode2VecGraphSageGCNGATuserqueryitemshopGremlin UDFTHANKS