业务场景
- 信息流业务增多,在多个信息流平台进行投放,为了进一步优化投放效果,需要对接各平台的API并按照其要求进行时间节点事件的回传,从而达到投放模型的进一步优化
模块设计
- 首先信息流上报注重一个实效性,最理想效果是一旦业务达到某个事件定义或者标准就进行触发上报。
- 确定业务上报交互方式,建议是通过Mq通信进行交互,不要将业务场景与上报进行耦合,业务场景达到每个事件标准时就可以进行消息发送通知上报,对应消费者进行消费从而上报。(当然如果系统不支持的话也可以直接进行http接口调用)
- 管理端模块设计
3.1 一般需要信息流上报的业务场景都是针对有特定的某一种产品进行信息流投放,对于这块上报能达到运营同学可以自己管理是最佳的。
针对业务场景我们可以定义产品配置化概念,建立如如下表
CREATE TABLE `information_flow_configuration` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`product_id` int(11) NOT NULL COMMENT '产品id',
`info_type` varchar(50) NOT NULL COMMENT '上报事件',
`platform` varchar(50) NOT NULL COMMENT '上报平台',
`extend` text COMMENT '拓展参数',
`is_close` tinyint(1) NOT NULL DEFAULT '1' COMMENT '上报开关状态;1开启,0关闭',
`create_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='信息流产品上报配置表'
;
针对于产品进行信息流上报的配置,并且可以控制是否上报
4. 上报模块设计
4.1 策略模式定义好我们对接各大信息流平台的业务场景接口,不同的平台对应实现不同的实现类,并按照platformType进行区分平台类型即可,不用特定的if else代码冗余
public interface InformationApplicationService {
/**
* 业务类型
* @return
*/
String platformType();
/**
* 上报实现
*/
Response requestPlatform(InformationRequest request);
}
3.2 业务过程交互时,需要在消息发送时,需要带上需要上报的平台类型参数,一边消费者这里进行找到产品上报配置,以及区分找到所对应的实现类进行上报。
说明
- 如果是简单实现一个上报的话是省略管理端的设计,可以直接进行上报就可以,就是消息参数需要带上各自需要上报的事件区分。
- 该方案其中的上报参数可以根据业务场景自己定义
- 如果没有Mq场景可直接将Mq换成http接口调用