开发者社区 > 博文 > 黄金系统架构升级全记录
分享
  • 打开微信扫码分享

  • 点击前往QQ分享

  • 点击前往微博分享

  • 点击复制链接

黄金系统架构升级全记录

  • 京东黄金团队(JDGolder)
  • 2021-01-19
  • IP归属:未知
  • 111720浏览

       2019年之前,黄金理财主要是以积存金为主打造的理财业务线,随着黄金业务的不断发展,黄金理财的品类也在不断扩充,用户群体和交易量也相应不断提升。原有的单体架构已经不能满足业务需求,2020年黄金业务线进行了一次全新的架构升级,接下来我们就整体架构升级的思想和难点及优势加以分析和说明。


2019/2020架构对比图 

(一)  利用容器化思想打造平台服务

2019年,黄金服务属于单体业务服务,整体架构主要以积存金为主进行建设,包括前端服务、后端服务(交易系统、账户系统、网关系统、后台管理系统等)、底层数据库服务,一般业务系统的架构基本都是基于这样的三层架构进行建设,对于单体业务来说,这样的架构可以应对平时的业务发展,但是如果随着产品线的扩充和交易量的提升,这种架构呈现出几点不足(1)核心业务系统与前端耦合性太强,目前金融的业务一般通过后端服务注册到金融移动网关来实现对前端业务的输出。随着业务场景的增多,每一次前端展示的变更都需要业务系统新增或者修改接口上线,非常不便。(2)缺少集中统一化管理,所有的压测任务、JSF限流策略均分散到各个业务系统接口中,且一些公共组件和最佳实践服务分散到各个模块之中,很难统一升级管理。(3)系统定制化太高,每新增一个业务需要重新开发网关系统、后台管理系统等,复用程度比较低,开发成本大。

 针对以上几点不足,我们对黄金架构进行了全面升级,首先我们摒弃了单体三层架构,改为容器化平台思想,参考于docker架构,我们将整个黄金系统打造成一个容器镜像,提供通用用户网关服务、外部网关服务、大数据分析服务、后台管理服务等。每新增一个黄金业务均可以共用这些服务,无需重复开发。打一个比方,新版黄金系统架构可以看做一个主板底座,提供多个卡槽。每一个新增的黄金业务系统可以看做一个内存条,可以共享主板上的电容,并且可以扩展,这样可以大幅度提高整体架构的扩展性和灵活性,也便于服务的统一管理,下面进行具体说明:

(1) 统一用户网关系统:在核心业务系统与移动网关之间新增一层用户网关系统,可以对各个核心业务系统的元接口进行服务聚合和重组,这样的优点在于后续所有前端展示的改动只要不涉及核心交易接口变更,均可以在此层完成改造,无需变更核心业务系统。同时可以对此层进行服务器统一扩容以实现前端流量的提升,因为很多流量的访问可以在到达核心交易之前做判断和分流,无需全部将流量打到核心交易系统,这样也便于统一管理,节省服务资源,降低成本。同时针对该层,可以提供统一的组件和最佳实践服务,如:高并发控制、限流控制、短信防刷、操作防刷、白名单管理等,所有新增的业务系统均可以共享这些服务,无需重复开发,同时也便于统一升级和维护管理,如下图所示:

 

(2) 统一外部网关系统:每一个业务都存在与外部机构进行网络通信的需求,如果每次新增业务都需要开通防火墙或者部署专线则费时、费成本,且网络安全性得不到保证,因为黄金业务线很多业务对接的主体和合作机构存在着复用性,所有构建一套统一外部网关系统势在必行,可以针对外部网络访问防火墙进行统一配置,扩容的时候可以以镜像的模式复制网络权限等信息,提高效率。

(3) 统一后台管理系统:最初的后台管理系统设计是基于数据库表和业务系统接口进行定制化开发,每一次新增业务,都需要自行开发后台管理系统,这样既耗费人力,又不利于系统的扩展。本次系统架构升级,我们与数据库、中台和基础研发部共建了一套自动化后台管理系统,可以将数据抽取到大数据系统之中,运维只需要在可视化平台配置需要展示的表、字段和搜索条件,即可以展示出来。首先建立数据DTS任务,数据部可以实时读取数据库表的binlog日志,将数据实时写入到Hbase+ES中,并且提供数据中心查询接口,可以读取库表结构和数据。这样每一个新增的业务在数据库维度达到了通用和统一配置,无需单独开发。

(二)  利用配置化思想提升研发销能(合作机构+前后端分离)

        随着业务的不断发展,合作机构的不断增多,用户可选择渠道也呈现多样化,同时为了提高交易量和用户量,需要将黄金服务嵌入到各个App和外部渠道之中。这样就面临几个问题:(1)如何能够实现合作机构的快速接入?(2)如何能够实现外部渠道快速打通?(3)如何能够实现黄金服务在各个App内快速输出?

        基于以上几个问题,我们对系统流程进行重新梳理和改造,将过去代码化配置、数据库配置、文件配置统一改为统一配置中心对数据进行配置,这样无需应用上线,即可完成服务的搭建和输出,具体如下:统一各家结算中心的接口规范,进行统一适配处理。将各家合作机构的不同入口、接口地址、跳转地址统一整理到统一配置文件中心,同时将统一配置文件进行归类,与通用配置文件相区分,比如新增合作主体配置文件。这样看似没有问题,但是随着合作机构的增多,配置文件也会变得越来越庞大,不利于维护,所以我们同配置中心和基础研发部进行合作,打造了一款可视化配置文件平台,将最初的结构化数据展示为表格或者表单插件供运营人员使用,同时增加审批流服务对整体流程进行把控。

        同时为了适应外部渠道快速接入,实现从分销分润体系到财务结算的整体打通,我们在用户下单的时候增加了分销码和渠道号进行全流程透传,然后通过统一配置中心进行财务场景和分销分润公式的配置,这样每次对接新的渠道可以实现系统无需发布上线即可完成服务。

        除了后端服务实现了全配置化外,前端服务也进行了组件化配置,前端H5和客户端全部采用乐高、利箭等组件化配置,对外进行输出。同一个组件比如行情组件、账户组件可以在各个App平台进行复用,无需重复开发,同时组件内容全部采用后端服务填充,每次内容变更,无需客户端发版上线,非常灵活,一些广告资源位配置,可以运营直接在乐高平台进行配置,无需研发支持,极大程度提升研发人效。

(三)  利用数据化思想输出智能服务

        随着黄金业务量与用户量的提升,如何提高每个子业务的精细化运营变得至关重要。我们在数据运营方面主要做了以下两点技术升级:(1)每新增一个业务,所有核心数据表均抽取到银河大数据平台,通过模型搭建与机器学习输出智能化服务。(2)与数据部和基础研发部共建BI分析平台,对业务数据进行实时统计和分析。

       以金价分析为例,我们通过数据管道抽取了金价k线走势、黄金资讯信息、美元指数走势、财经日历等信息,同时可以爬取用户每天实物黄金及黄金类首饰的搜索、浏览、成交数据,除黄金资讯信息、财经日历外,其余均为数值型数据,我们首先通过cnn模型对资讯信息标题进行预测,资讯样本通过专家经验判读文章对于金价的走势是看涨还是看跌进行打标,将cnn模型预测出的概率值进行处理,加工为每日黄金资讯预测金价上涨的占比指标纳入下一步模型计算;通过金价走势的时间序列数据进行金价预测,通过多种模型尝试后选择ARIMA模型对黄金价格进行预测,建立的ARIMA(2,1,0)模型预测值与实际数据相比拟合度高,可以较好地对短期黄金价格进行预测。我们也对用户的购买行为和投资喜好进行数据分析,更好的为用户推荐适合自己的黄金品类,这里不逐一展开说明。同时,我们也搭建了BI分析平台,可以监听数据库的binlog或者是MQ等信息,通过RIC实时计算平台进行FlinkSQL分析,将最终统计结果落库进行展示。实时计算平台可以支持多种输入和输出,比如binlogMQ、文件、数据库等,下图是黄金业务整体数据抓取和分析策略。


        通过本次黄金底层架构升级改造,大幅度提升了新业务系统的接入速度,有效的利用服务资源,降低成本,提升研发人效。比较有代表性的系统是今年新增的业务系统-黄金TD平台系统,该业务主要与多家合作机构对接,提供TD交易功能。整体系统搭建在新版黄金架构系统之上,复用了用户网关系统、对外网关系统、后台管理系统。同时对各个外部机构接口进行统一适配处理,采用配置化思想使新增合作机构的对接无需系统上线,全面可配置化,逐步将研发工作转移给运营人员配置,同时采用前后端分离的方案,使前端全面组件化、楼层化可配置,每一个前端组件可以复用在各个App平台。同时每一次需求的变更,无需客户端发版,全部由服务端下发变更,灵活方便。最终在研发人员是去年一半的情况下,实现了业务整体翻倍,交易额突破千亿,整体架构如下图所示。


        随着新的一年到来,黄金业务又将迎来新的挑战,在扩充理财交易品类的同时,开始打造黄金实物品牌,逐步使整个黄金业务完成闭环。黄金系统架构也将面临新的问题和挑战,我们将不断完善系统服务,升级调整,打造一条高性能、高可用、高品质、灵活扩展的黄金产品线。

共0条评论