推荐策略平台
一、项目背景与目标
1、背景概况
-
推荐业务接⼝内部逻辑⿊盒,且耦合在⼀起,重⽤困难,开发⾮常耗时。
-
接⼝协议按需制定,没有标准化,新来一个业务开发完接⼝都要重新找⼈对接⼀遍
-
越来越多的业务推荐业务场景,开发效率慢,重造轮子成本明显太高
2、目标成果
-
减少⼈力和时间成本:对接通⽤接⼝,只需一份⽂档即可对接,减少沟通成本;拆成模块,配置成图即完成⼀个业务,提高搭建服务效率
-
为决策提供便利:决策者可通过业务流程图,结合报表,调整和优化⽅方案,摆脱业务泥潭,专注推荐策略
-
化零为整:平台将以前零散业务整合,节约资源,减少维护成本,集中提升服务质量和性能
二、设计文档
1、
推荐策略平台核心,是⼀个DAG执行流程图,每个节点称为模块(Model),由一 个DataFlow对象(包含请求、结果、用户画像、物品画像、图节点状态等字段)贯穿整个图所有模块。DAG脚本以及生成图如下:
//DAG脚本简单示例
StartModel,Test1Model
StartModel,Test2Model
Test2Model,Test3Model
Test1Model,Test3Model

2、⼤框架 admin和service组成

-
admin⾯向用户操作,编辑“业务场景”,构造⼀个“项⽬”;编辑“项目”,构造由“模块”组成的DAG图脚本。
-
service是服务架构层,作为dubbo provider对外提供rpc服务。只有⼀个rcmd 接口,由bzCode_sceneCode(业务_场景)区分不同推荐业务
-
service定时加载admin编辑好的配置文件,通过bzCode_sceneCode找到 project,进⽽找到DAG图脚本,深度遍历执行每个node(即model)。
三、管理后台主要模块如下
模块管理:平台主要设计管理各个模块,包括上线下线,策略主要是将这些模块整合成一个完整的服务,模块管理如下图所示:

业务场景管理—按不同业务场景分项目管理:包括上线、下线、预发等等

项目与模块 的关系 :项目由各个模块 组成,组成一个dag计算图,完成一个策略服务;
项目与场景的关系 :一个场景如一个首页推荐场景,也可以是首页场景里某一个样式数据。粒度可以比较灵活,因为整个设计里还可以图调图,也就是在DAG图里,某一个模块可以是另一个DAG图。然后场景可以由多个项目组成,一种策略服务成组一个项目,一个场景下如果有多种策略并行就会多个项目同时在线。