推荐策略平台
一、项目背景与目标
1、背景概况
-
推荐业务接⼝内部逻辑⿊盒,且耦合在⼀起,重⽤困难,开发⾮常耗时。
-
接⼝协议按需制定,没有标准化,新来一个业务开发完接⼝都要重新找⼈对接⼀遍
-
越来越多的业务推荐业务场景,开发效率慢,重造轮子成本明显太高
2、目标成果
-
减少⼈力和时间成本:对接通⽤接⼝,只需一份⽂档即可对接,减少沟通成本;拆成模块,配置成图即完成⼀个业务,提高搭建服务效率
-
为决策提供便利:决策者可通过业务流程图,结合报表,调整和优化⽅方案,摆脱业务泥潭,专注推荐策略
-
化零为整:平台将以前零散业务整合,节约资源,减少维护成本,集中提升服务质量和性能
二、设计文档
1、
推荐策略平台核心,是⼀个DAG执行流程图,每个节点称为模块(Model),由一 个DataFlow对象(包含请求、结果、用户画像、物品画像、图节点状态等字段)贯穿整个图所有模块。DAG脚本以及生成图如下:
//DAG脚本简单示例
StartModel,Test1Model
StartModel,Test2Model
Test2Model,Test3Model
Test1Model,Test3Model
![](https://i-blog.csdnimg.cn/blog_migrate/508cbca65c8a3402c62411ba7f36b835.png)
2、⼤框架 admin和service组成
![](https://i-blog.csdnimg.cn/blog_migrate/408cdb5e93ec0db027fadca69490fc0a.png)
-
admin⾯向用户操作,编辑“业务场景”,构造⼀个“项⽬”;编辑“项目”,构造由“模块”组成的DAG图脚本。
-
service是服务架构层,作为dubbo provider对外提供rpc服务。只有⼀个rcmd 接口,由bzCode_sceneCode(业务_场景)区分不同推荐业务
-
service定时加载admin编辑好的配置文件,通过bzCode_sceneCode找到 project,进⽽找到DAG图脚本,深度遍历执行每个node(即model)。
三、管理后台主要模块如下
模块管理:平台主要设计管理各个模块,包括上线下线,策略主要是将这些模块整合成一个完整的服务,模块管理如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/39ef24d3ee763b1bcc56838e67da9720.png)
业务场景管理—按不同业务场景分项目管理:包括上线、下线、预发等等
![](https://i-blog.csdnimg.cn/blog_migrate/049852b55f327f35746c39a65eb894d0.png)
项目与模块 的关系 :项目由各个模块 组成,组成一个dag计算图,完成一个策略服务;
项目与场景的关系 :一个场景如一个首页推荐场景,也可以是首页场景里某一个样式数据。粒度可以比较灵活,因为整个设计里还可以图调图,也就是在DAG图里,某一个模块可以是另一个DAG图。然后场景可以由多个项目组成,一种策略服务成组一个项目,一个场景下如果有多种策略并行就会多个项目同时在线。