zoukankan      html  css  js  c++  java
  • 人群任务处理流程

    目的###

    • 产出定制条件的总数量
    • 产出当前条件的人在其他标签维度的分布情况
    • 产出满足当前条件的人,并添加标记

    创建任务###

    • 创建原子任务
    • 原子任务间进行逻辑交并补
    • 存储进任务DB

    执行任务###

    • 解析任务
    • 周期扫描DB获取任务
    • 解析原子任务,将原子任务处理成fel(定制函数表达式),类似hive定制私有函数,函数包含自己的处理逻辑,生成字符串
    • 根据创建的任务,将原子任务,进行交并补组合,生成任务解析后的字符串
    • 执行任务
    • 使用客户端提交fel字符串给计算中心
    • 计算中心将任务分发到cluter机器
    • 各个机器上启动多线程,分别处理各个机器内存的数据,
    • 使用fe,解析fel字符串,反射fel自定义函数,进行cookie的判断,满足条件,将cookie,提交到下一环节,不满足条件则直接抛弃
    • 统计满足条件的cookie,在各个维度上的分布,并将cookie输出到一个固定的目录
    • 合并各个线程的数据,然后在合并各个cluster数据
    • 将结果返回给client
    • 结果处理
    • 将client获取的结果,分维度存储到mysql报告库中
    • 将产出的文件数据写入到kv中

    问题###

    • 数据存储在java堆中,不便于检查当前数据的准确性,简单的QA无法介入,需要编写程序才可以查看存储的数据是否准确
    • 使用fel反射开发,增加开发部署难度,如果增加了原子条件类型,需要编写新的fel进行处理
    • 数据维护在java堆中,极其容易崩溃,java内存不稳定,重新恢复极慢

    优化方向###

    • 修改存储,不适用java堆,使用table化工具,spark的表,phoenix表等
    • 降低数据校验难度,可直接使用sql查询当前的数据
    • 降低开发难度,直接sql可以产出报告
  • 相关阅读:
    提升PHP执行效率的一些小细节
    linux文件处理命令
    C# file操作
    C# MD5
    C# guid
    C# Path类 Directory类
    MarkDown学习
    从GitHub建站迁移到服务器(Java环境)
    sonarqube在windows上软件安装,配置及使用
    【优化】记录一次方法性能优化
  • 原文地址:https://www.cnblogs.com/isenhome/p/5140192.html
Copyright © 2011-2022 走看看