DMP商业大数据管理平台架构与实现( 三 )


  • 离线特征先在内存中合并单个用户当日的所有特征 , 再合并所有RDD中包含该用户特征的数据 , 最后再把生成的特征数据同特征库中的历史特征数据进行合并(从n到1);
  • 实时特征在写入特征库之前先进行窗口内聚合 , 通过牺牲时效性从而减轻特征库的读写压力;
  • 将IDMap与离线特征加入本地缓存中 。
优化结果:超时概率从之前的3%左右降到了0.1%以下 。
② 离线实时特征拆库
由于之前离线实时特征库为同一个库 , 大量离线写入会对在线读请求有影响 , 造成服务超时及离线数据导入时间较长 。 针对此现象我们将离线特征单独存储 , 并将数据导入方式从单条导入修改为bulkload导入的方式 。
优化结果:离线数据导入由3小时降至0.5小时 , 同时DMP对外查询服务保证在50ms之内 。
③ 耗时优化
遇到问题:
  • 获取单个用户请求时需要经过IDMap查询、两次实时特征查询和一次离线特征查询 , 总共四次服务调用 , 串行执行很容易超时;
  • 入库的时候都做了压缩和序列化 , 如何提高压缩耗时与压缩比;
  • DMP平台采用Java服务懒加载方式从而导致服务启动耗时 。
优化方法:
  • 对于没有依赖关系的服务调用采用并行处理;
  • IDMapping增加缓存 , 保证服务的响应时间;
  • 压缩加入压缩头 , 支持多种序列化与压缩方式 , 保留优化空间;
  • 修改懒加载方式
优化结果:服务调用耗时从原来的各服务调用时间之和变成各服务调用耗时最大值 。
11. DMP实验平台
DMP商业大数据管理平台架构与实现文章插图