电商财务结算系统重构实践
发布日期:2021-05-10 05:11:26 浏览次数:20 分类:精选文章

本文共 1399 字,大约阅读时间需要 4 分钟。

电商财务结算系统重构实践

背景

业务背景

唯品会作为全国第三大电商平台,连接全球几万家供应商,24小时 Spoon 为亿万会员提供优质产品服务。自营电商业务决定了平台需要为供应商提供高效、准确的仓储物流服务和财务服务。财务结算系统作为电商后端的核心功能,需要核算每个结算周期中供应商应结算的款项。面对复杂的结算类型和供应商个性化需求,以及日益增长的业务量/数据量,如何为供应商提供更快捷的结算服务,成为持续研究的课题。

技术背景

由于历史原因,唯品会的财务系统架构简单,使用整体化的Oracle E-Business Suite(EBS)。近年来,由于业务扩展,原有系统的性能已无法承受压力。近两年,陆续将采购、建档、商品等模块迁移至自建系统,减轻了EBS负担。近一年供应商数量和SKU数量大幅增加,基于EBS的财务系统的存储、计算性能已临近极限。EBS底层基于Oracle数据库,运维成本和运行效率问题日益突出。

在此背景下,2016年推出FCS 2.0项目,将财务系统中的库存、结算、应收、应付等核心模块迁移到自研的财务协同系统FCS中。供应商结算作为FCS中运算数据量最大、规则最复杂的模块,决定采用SPARK基础构建供应商结算平台(VSP)。

设计目标

在系统设计中,我们追求更快、更准、更灵活的目标:

  • 更快:现有EBS系统运行时间从6小时缩短到1小时,实现更短的结算周期。
  • 更准:系统自身计算准确性外,数据核对和检查更加便捷,提供多角度报表和查询支持多方对账。
  • 更灵活:VSP平台具备业务流程配置和条件配置,能够快速适应业务变化。
  • 架构设计

    为什么选择SPARK?

    在技术选型前,团队考虑以下因素:

  • 支持不同类型数据源的快速读写。
  • 数据访问支持数据库分片。
  • 高效内存计算和内存管理。
  • 支持任务分片和结果聚合。
  • 支持资源管理和扩展能力。
  • 支持Java语言和SQL,团队学习曲线较平缓。
  • 通过比较典型场景(跨库查询和分库匹配查询),得出以下结论:

    • SPARK SQL开发效率高,适合处理复杂的Join逻辑,符合PLSQL开发习惯。
    • SPARK自带的分区存储/读取技术提升了对MySQL数据源的处理效率。
    • SPARK资源管理基于进程级,YARN方式具有良好的稳定性和可扩展性。

    整体架构

    VSP平台核心采用SPARK计算引擎,支持连接MySQL、Oracle、HBASE、Redis等多种数据源,以及唯品会自研的OSP服务框架。

    SPARK集群使用YARN模式,有以下优势:

  • 支持多框架部署和资源共享。
  • 提供作业分类、隔离和优先级排序功能。
  • 具有进程安全性支持,防止节点间数据泄漏。
  • 开发实践

    业务流程抽象

    将结算流程分为三个阶段:数据抽取、预处理、结算,每个阶段为独立任务集,通过任务编排系统避免资源浪费。具体流程如下:

  • 数据抽取:定时从多源数据源(如MySQL、Hive)抽取结算所需的源数据,按时间批次处理后存储至分库。
  • 预处理:补充结算所需的关键信息,如采购订单、销售订单、结算价格和税率。
  • 结算:基于结算规则计算每个供应商应结算款项。
  • 系统设计抽象

    建立基于SPARK的应用开发框架,实现特性:

    1.提供标准化开发实践,降低开发门槛,类似传统Java项目便捷性。 2.框架负责作业启停、配置、参数优化等管理,减少开发者误操作。 3.封装底层资源访问,提升代码重用率。

    相关文章

    ...

    上一篇:大数据量业务报表实现思考
    下一篇:从Mysql源代码角度分析一句简单sql的查询过程

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2025年04月26日 08时52分20秒