指标,用户画像和标签系统
需求:跨境收款的各个部门都需要不同的数据指标,但是这些指标因为没有一个统一的口径,导致不同的业
务部门有不同的理解,导致对于同一个指标,经常出现结果对应不上的问题。这个时候就需要开发一套指标
系统,统一指标口径,同时,基于指标系统,开发标签和用户画像系统。
难点:
业务流程涉及部门较多
各种业务指标繁多
方案:
针对各种业务过程建模,按照不同的数据纬度,不同的业务场景统一数据指标
和bi部门统一定义指标口径
针对不同的维度的指标,将指标结果保存到不同的指标宽表中。数据指标的定时任务是基于spark来实
现的,结果保存到hive中,再同步到phoenix中
基于指标宽表,构建需要的标签(比如30天未入账)
基于标签和指标,构建用户画像系统。针对不同的标签,圈出不同的用户群体,针对该用户群体进行统
一推送。
用户画像和标签系统需要先做标签和用户画像的定义,根据指标宽表,hive中的其他维表和dwd层数据
表查询出符合标签的用户(或虚拟卡)。将打标的结果和用户画像的结果保存在elasticsearch中,提供
给后端服务。
涉及到的技术:
spark,flink,azkaban,hive,elasticsearch,Phoenix等
springboot,mysql,redis等服务端技术
入账系统额度控制和核销系统
需求:应外管局到要求,所有境外收入来源都要有对应的交易记录。同时连连跨境收款业务还包含境外的跨
境收款,因此,对于其他的外汇管制国家,也需要提供提现单的核销方案。连连跨境收款业务部门在对接各
种电商平台的时候,会拉取该用户在该平台的历史交易订单,当有资金通过连连支付的收款系统进入到连连
的虚拟资金账户的时候,需要首先统计用户的订单金额能否满足入账的金额;同时,在连连的用户进行金额
提取的时候,每一笔提现单,都需要对应到具体的订单,需要将订单关联到提现单上。
难点:
订单数据量大
不同平台订单数据格式差别很大
不同平台订单拉取质量不一致
核销需要根据提现单的金额凑超过该金额的订单,而且不能重复使用订单,在分布式计算环境下逻辑比
较麻烦
方案:针对不同的核销场景,做了不同的核销和额度控制的方案。
对于入账额度控制,目前采用的是预先生成订单额度包的方案。首先将数据按modify_time从phoenix
同步到hive中,针对不同的平台,按小时,用户id生成唯一的额度包,将额度包的计算结果从hive同步
到mysql中,再通过定时任务,加到该用户的额度账号上,显示该用户目前可入账金额。
核销系统目前根据不同的平台有不同的处理方案:
实时性要求高:对于实时性要求较高的场景下,提现单核销采用了和额度控制类似的额度包的方
案。预先计算好额度包,在进行额度核销的时候,通过拆包的方式满足提现单金额的要求。这里的
额度包里面的所有订单需要保证序列号是连续的,这样才能保证所有的订单都能被核销掉,才能尽
可能满足提现单的金额
实时性要求不高:对于实时性要求不高的场景小,核销采用定时任务的方式实现。这里用spark实
现的定时任务,每天查询出前一天处理完成的提现单,再根据拉取到的订单,从订单中选出一部分
订单,直到满足提现单的金额,将数据保存到hive中,然后同步到mysql中。
效果:
实时核销在分钟级别可以核销完某境外外管局要求的一批提现单
批量核销每天定时任务在半小时左右可以核销完所有的订单
涉及到的技术:
spark,azkaban,hive等大数据相关的数据任务
Springboot,mybatis,mysql,redis等服务端技术