1 整体架构
前言
项目介绍在线视频: https://www.bilibili.com/video/BV1zv41157yY
本案例是一个专注于flink动态规则计算的项目,核心技术组件涉及flink、hbase、clickhouse、drools等
项目可根据各类个性化需求进行二次开发后,直接用于实时运营,实时风控、交通监控等场景的线上生产
项目完整视频教程和资料代码等,可在易学在线 https://v.51doit.cn 获取
技术交流,可加微信: haitao-duan
技术架构示意图
2 涉及技术
- Flink 实时流式计算王者引擎
- Canal 数据库实时采集
- Kafka 分布式消息缓存系统
- Redis 内存数据库
- Drools 规则引擎
- Clickhouse 新秀OLAP数据库
- Hbase 大型分布式nosql数据库
- Java 即时编译 Java 动态类加载
- Springboot 后端开发整合框架
- Mybatis 后端开发DAO层框架
- Vue 前端开发JS框架
- Freemarker 模板引擎
3 需求举例
需求示例(一)
公司最近有一个商务休闲服装品牌的商家&平台联合促销活动,在3.25-4.25期间,只要购买该品牌的服装,则都可以使用一个50元的代金券;
市场运营人员不想把优惠券无差别地发放给平台所有用户,而是想把优惠券尽可能发给有可能产生购买行为的用户;因此,市场部定义了一个发放优惠券的促销规则:
规则触发行为条件:
-
用户浏览男装商品
-
受众画像属性条件:
- 用户年龄:28-40岁之间
- 用户性别:男性
-
受众行为属性条件:
- 用户在最近1个月内,有过10次男装浏览行为
- 用户在最近1个月内,有过5次“商务休闲”关键词搜索行为
需求示例(二)
-
规则触发条件:浏览或点击或加购奶茶类饮品
-
受众画像属性条件:年龄(15-25),性别(女),vip等级(>=2),月消费(>=200)
-
受众行为属性条件:周登录次数(>4),月奶茶类收藏(>3),近3天点赞(>6)
周依次做过:轮播广告AD3点击,奶茶产品详情浏览,饮料类添加购物车
4 需求规则抽象模型
规则组成要素分析抽象
规则要素(即规则条件),其实包括4个部分:
- 事实,即被判断的主体和属性,如上面规则的账号及登陆次数、IP和注册次数等;
- 条件,判断的逻辑,如某事实的某属性大于某个指标;
- 指标阈值,判断的依据,比如登陆次数的临界阈值,注册账号数的临界阈值等;
- 时间要素(条件所涉及的时间范围)
规则可由运营专家凭经验填写,也可由数据分析师根据历史数据发掘,但因为规则与现实需求的契合会随时间而变(如与黑产的攻防之中会被猜中导致失效),所以无一例外都需要动态调整。
规则的运算模式分析抽象
- 原子条件(查询)
- 与或非组合
规则的运算数据源
- 用户行为实时明细日志
- 用户画像数据
- 用户行为历史统计聚合数据
3 开发模式
迭代式开发
由于系统相对复杂,细节逻辑众多,因此本项目课程将带领学员按照迭代的模式进行开发;
逐个突破关键技术点,然后逐步迭代丰富和完善系统;
模块化开发
一个复杂的系统,不可能像helloworld一样线性开发;
必须要进行恰当的模块划分,并以高内聚、低耦合作为模块设计的原则;
只有这样,才能开发出结构清晰,可维护性/可扩展性高的系统;
模块测试
每一个模块开发完成后,都要进行充分测试,这样才能尽可能降低模块整合后的故障率;
阶段联调测试
每个大的阶段开发完成,都需要进行联调测试,确保该环节之前的所有功能已经完成,所有问题已经排除;
性能压力测试
对核心环节,应该扎实做好性能压力测试;