7

揭秘宜信财富年度账单的技术实现

 3 years ago
source link: http://college.creditease.cn/detail/343
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

揭秘宜信财富年度账单的技术实现

宜信财富管理技术团队 2020-01-03 浏览量:1773

开头.jpeg

年底很多移动产品都会推出自己的年度账单,每年都会引起大众媒体的关注。今年有幸参与了宜信财富APP年度账单的开发,本文将带大家探索宜信财富年度账单背后的技术架构和研发逻辑,希望可以给大家带来一些思路上的启发。

二、前端整体架构和执行流程

宜信财富年度账单前端架构所采用的技术栈包括:

  • 前端页面是用H5制作;

  • 数据加载进度百分比,技术用到swiper插件和一些CSS3动效;

  • 海报生成用到了canvas图片合成,把海报背景和二维码合二为一。

  • 为了完成MGM的追踪,在二维码中嵌入M1信息。

三、数据来源和数据处理

本次年度账单涉及客户维度、销售维度、客户标签等数据,其中客户维度包括活动参与、文章、视频浏览等数据。这部分数据的整合来源于数据中台的主题数据。以下是数据中台的架构图:

图片1.png

  • ODS:数据来源层,存放从业务系统抽取过来的数据,业务系统中的原始数据经过抽取、洗净、传输装入本层。这层数据接近原始数据,却不等同原始数据,数据装入的时候进行了去重、去噪、表命名、字段命名等一系列规范操作。

  • DW:数据仓库层,该层是数据仓库的主体,将ODS层的数据按照主题建立数据模型,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合,是一个包含所有主题的通用的集合。

  • DM:数据集市层,是以某个业务应用为出发点而生成的字段比较的宽表,用于提供后续的业务查询、OLAP分析、数据分发等,该层数据主要由轻度汇总层和明细层数据计算生成。

在数据中台的架构上,我们建立了“以客户为中心”的标签体系。该套标签体系按照人口属性、价值指标、地理指标、心理指标等几大类对数据进行分层管理,标签的加工方式主要来源于DW和DM层数据的轻量汇总或者衍生加工,以及部分模型生成的产品预测等标签。这套标签体系支持360度客户画像以及分析关键接触点,提供基于跨渠道全流客户体验优化和关键触点优化。

图片2.png

本次账单的数据主要来源于业务操作、用户管理等源系统数据,这些数据被结构化地存储在数据库集群中,且都已接入数据中台,并按照定时任务或者实时数据落入对应主题域。账单数据通过其相应主题数据加工而成,前端通过接口API访问数据。

账单需求里的“销售评价消息实时推送”和“账单传播短信发送”都是通过智能运营系统支持的,该系统是集运营活动创建、执行、管理、反馈、迭代为一体的自动化平台,能够通过用户属性、标签、计划、操作等数据筛选客群,实现目标的精准触达,提升关键指标和运营效率。

下面是智能运营系统创建运营计划流程图:

图片3.png

  • 销售评价消息实时推送:该功能依赖wormhole实时平台将数据落到数据库,然后在智能运营系统里配置数据,最终通过消息中心和极光将消息推送到产品终端。

  • 账单传播短信发送:按照业务规则筛选符合条件的客群,在智能运营系统里配置短信模板等内容,然后调用notify通过短信平台将短信发送给客户。

四、技术后台

用户数据来源于宜信财富平台本身数据,包含:基础信息、浏览信息、参与活动等多项数据,如何保证数据准确、高效地传达到前端是后端开发所必须保障的。资产平台采用了spring+jersery+oracle+redis+jetCache的技术架构,为了提升用户体验度,加快响应时间,数据存储上该项目采用了缓存、非关系数据库和传统关系数据库灵活结合的方式,更好地提供数据支撑。

在对接年度账单需求时,我们也着重考虑了接口响应时间。年度账单用户数据包括用户活动数据及操作数据两张表,其中操作数据是一个重量级表格,为了减少数据库的IO操作,采用了两种方式来减少IO时间:

  • 根据数据组提供的标签,尽量减少访问资产数据表的几率;

  • 利用java8的Stream的新特性,将复杂的SQL逻辑放进代码中进行处理。

Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,更像一个高级版本的 Iterator。

此外Stream还提供了并行技术,在不关注集合内部数据顺序的时候,可以采用并行Stream拆解任务来加速处理过程。例如在做统计,需要将子产品进行汇总,或其他操作时。

如果将复杂的代码逻辑直接用SQL来实现,代码会非常冗长,执行效率也不高。代码的逻辑是使用并行流Stream,根据类型对相关数据进行分类汇总,并且根据本次需求的业务场景将某一子类划分到另一个类别下。

使用Stream并行流代替SQL逻辑可以加速执行效率,减少响应时间。感兴趣的同学如果想了解Stream的更多特性,可以参考技术文档。Stream的应用能够让代码逻辑更加清晰,提高速度。

此项目是由多个团队共同协作完成,本文对年度账单需求做了一次技术层面的梳理,由于时间比较匆忙,内容不太详细,希望可以给大家带来一些开发思路,也希望用户可以真切感受到我们的用心。识别文末二维码,即可参与年度账单生成。

来源:宜信财富管理技术团队

作者:米志华、孙李强、李力、赵全超

底部.jpeg

发现文章有错误、对内容有疑问,都可以通过关注宜信技术学院微信公众号(CE_TECH),在后台留言给我们。我们每周会挑选出一位热心小伙伴,送上一份精美的小礼品。快来扫码关注我们吧!

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK