前言
我对数据中层业务系统的定义,基于上游数据,进行加工生产,供下游用户使用的系统。
其位于源数据与用户之间,以源数据为基础,为用户提供具体业务服务,例如基金类股票类产品。
接下来结合我的工作经历,从几个方面讲了下我认为重要的点。
拓扑
例如上游数据来自券商,常规的拓扑如下图。
由于业务多样性,必然存在多个上游数据的要求。
设计重点
接下来从透明性、微服务、准确性、平台化四个方面,阐述在设计时需要关注的地方。
券商透明
对于具体业务域,无论订单、资产、行情,均不应感知到具体合作的券商,即券商对业务是透明的。
为了达到完全解耦的目标,我在业务和券商之间增加券商接入层,其提供通用服务,屏蔽券商差异。
微服务
以业务域维度进行微服务划分,运用比较完善的微服务框架,进行微服务改造。
微服务化改造后,服务使用方式更加灵活简洁,也可以建立起完善的微服务生态。
数据准确性
数据中层业务系统,以第三方(例如券商)数据为基础,经过业务处理,为用户提供某些能力。
其位于源数据与用户之间,以源数据为基础,为用户提供具体业务服务。
这类系统在设计时,需要考虑实时与离线性。可以依据这个维度划分业务功能。
- 对数据准确性有强烈要求的功能,必须使用实时源数据,不要依赖中层整理生成的数据,避免产生中层各业务系统间的环行依赖。
例如中层订单业务下单时以中层资产业务数据为准,导致下单失败。中层资产以中层订单为准,计算资产,导致资产不正确。一旦产生环形依赖,问题源源不断。
避免环形依赖,可采取订单或资产仅一方依赖原始数据进行数据加工,另一方依赖加工后数据。若数据源对调用量无限制,解析加工成本小,可以均依赖数据源。
- 离线数据,即为用户提供的数据不是实时,例如t-1数据。对于离线数据的透出,必须向用户输出明确文案,减少用户疑惑,同时也较少无意义的线上问题。
- 数据中层业务系统,还需要提供类似对账的check能力,以及之后的提醒或自恢复能力。
- 对于逐日依赖的数据,如今日数据生成需要依赖昨日数据,需要形成齿轮咬合的效果。
平台化与能力输出
业务发展的一种路径,就是业务发展到一定程度后,将业务平台化,2B输出业务能力,成为服务提供商。
基于业务系统现状,达到改动最小化的目标,按照渠道+用户+产品维度进行数据隔离,提炼出逻辑交易账号概念。基于逻辑交易账号概念,输出平台化系统图。
总结
关于这类系统,在设计阶段把握好上边几点,可以避免后续的很多问题。