从0到1设计一个高可用数据对账系统

2023-11-23 05:50

本文主要是介绍从0到1设计一个高可用数据对账系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、业务系统设计概述

1、什么是业务系统

互联网公司常常将产品方向分为两类,C端和B端,C端主要是面向客户和消费者的系统,B端的范围则相对模糊,给供应商或商家使用的系统,给内部业务人员使用的系统,都统称为B端系统。C端和B端系统建设的出发点和侧重点完全不同。C端系统偏重用户体验,强调感性,持续的数据分析优化,同一个按钮不同的摆放位置都要精心设计、论证,服务对象是个人;B端系统偏重流程、模块化,强调抽象和结构性,讲究整体的规划和体系设计,服务对象是组织和机构。
如果将B端系统进一步拆分,也可以分为两类,第一类是商家端,常见于双边模式的平台型互联网公司,例如淘宝的卖家管理系统,美团的商家管理后台;第二类是内部业务系统,支持企业经营、管理、业务运转。

  • 常见的业务系统包括ERP(EnterpriseResource Planning),CRM(CustomerRelationship Management),SCM(Supply ChainManagement),WMS(WarehouseManagement System),TMS(TransportationManagement System),OA(Office Automation),HRM(Human ResourceManagement)等等。
  • 从软件学的角度来看,所有软件系统分为两类,第一类是能够实时产生业务数据的系统,叫做OLTP(Online TransactionProcessing)系统,第二类是对数据进行加工、处理、探查、挖掘、展现的系统,叫做OLAP(Online AnalyticalProcessing)系统

总体来讲,业务系统对企业具有四点价值:提升管控能力、控制经营风险、降低运营成本、提升销售业绩。

2、设计业务系统重要性

针对不同企业强调的业务重点不一样,那么系统的业务的定制化特定化就是非常重要的。

3、如何设计一套业务系统

一般来讲,一套业务系统从0到1的构建,需要经历如下环节。
在这里插入图片描述
(1)业务方案设计
PM和业务负责人一起梳理、制定业务流程、制度、机制,理解业务的问题点,并确定软件系统解决方案。
(2)系统整体方案设计
PM结合业务诉求与目标,完成系统概要设计,包括界定业务、系统的边界,系统功能的抽象和演进蓝图,整体应用架构的设计,如何与公司已有系统拼接、交互。
(3)系统细节方案设计
PM完成细节方案的所有设计,包括建模、角色、界面、权限等。其中建模是最难的部分,建模好坏决定了系统未来的灵活性、可扩展性。建模要求对业务的全面理解,极强的抽象归纳能力。
(4)实施验收
PM对最终项目落地负责,系统上线后要展开持续的迭代优化,深度参与产品运营,数据分析等。
如果是从无到有设计系统,以上环节必须全面贯彻,尤其是架构设计和模型设计,是重中之重。

以上内容参考来源:
http://www.woshipm.com/pd/586436.html
https://36kr.com/p/5105245


四、数据对账系统

我们要设计的属于业务系统中的重点内容:数据对账,数据对账一般应用于支付系统,资金系统双方保持一致是非常重要的。而对于其他系统对于交互核心数据也是非常重要的,所以在这里我们需要从架构方面去设计一个高可用的数据对账系统。

什么是资金对账?

  • 在会计上的概念:指为了保证账簿记录的正确性而进行的有关账项的核对工作,做到账证相符、账账相符、账实相符。
  • 在支付机构的概念:资金对账,在对账中心进行,将系统保存的账务流水与银行返回的清算流水和清算文件进行对账,核对系统账务数据与银行清算数据的一致性,保证支付机构各备付金银行账户每日的预计发生额与实际发生额一致。即核对银行实际清算资金如充值、充退、提现等业务的银行处理结果是否一致。

对账中心的作用?

  • 是主要处理对账的系统模块,主要业务是清算对账。对账中心部署于工作平台,分别接受会计系统和清算系统的数据输入进行对账处理。
  • 对账中心最主要的职责是勾兑银行清算流水与支付系统入账流水,用以检查反映银存实际账户的余额变化与支付系统内部户余额变化是否平衡。对于已经核对无误的银行清算流水和支付系统入账流水,分别进入相应的历史银行流水库和历史入账流水库。
  • 对于勾兑结果中银行清算流水多于系统入账流水的,而操作人员不明确资金的来源,需要根据所设定的分类规则将暂不明确的资金进行挂账处理。而后我们认为该部分资金已经系统入账,可以入历史流水库。
  • 因为此时的银存实际账户的余额增加,与之对应的是支付系统内部户余额也增加了,比如: T 日的挂账可能会在 T+N 日后进行销账确认,而后续的销账行为是对明细流水的业务分流处理,我们不应将 T+N 日的销账所产生的账务流水作为入账流水,不再需要到对账中心体现。

现在从支付到引申类比其他数据对账系统(参考资料)
其他参考资料关于支付系统:资料1,资料2根据现有我们的系统进行系统之间的数据对账,以下为重点内容,由于有时候公司没有那么多财力和人力提供支持,所有的role都需要研发一个人来解决,所以这里我的角色是从业务方,PM,产品经理,架构师,研发,测试方面去一一解决。

(1)业务方案设计

业务背景(业务调研):联合营销项目主要围绕大促活动跨店铺,跨自营/商家,打标,优惠券,单品促销,大促盘货等活动的创建和收品,以当前的打标活动收品量1个亿的数据,同步给下游促销系统或者促销收品量上亿的数据同步给下游系统,这个过程中数据量大,持续时间周期长,就不得不需要保证双方系统之间的数据幂等性。之前出现过因为网络抖动,以及没有兜底数据造成的数据丢失和未同步给下游系统情况。

业务方案:目前业务核心系统处理逻辑方案-》同步下游数据,同步成功实时更新本系统数据状态,并插入日志表一条同步数据,失败数据会同步至ES。由于分布式系统,事务比较复杂,目前依赖于异常和MQ重试机制,容易出现的结果,垃圾数据和数据不一致未能及时发现并做出有效方案解决。考虑目前的情况需要进行数据对账,独立扩展于辅助核心系统的数据稳定性,并实现脱离现有业务核心系统。

(2)系统整体方案设计

  1. 对账内容和数据来源
  • 对账内容:主要是本系统和下游系统的sku商品数据是否一致。
  • 数据来源:本系统数据库表调用下游系统发送数据,
    本系统调用下游系统实时返回数据。
  1. 对账业务流程
    在这里插入图片描述
  2. 对账中心主要功能
    在这里插入图片描述
    Tips:
  • 1、入账接收:
    联合营销核心业务系统收品SKU信息发送MQ(redo)–》数据对账系统监听消费–》存储jimdb
  • 2、数据存储:
  • jimdb(redis)存储作为清算池,核对diff入账和出账数据,并校验。
  • 弹性数据库JED(MySQL),作为校验后的结果流水对账日志存储
  • 3、出账接收:
    联合营销核心业务系统实时调用促销系统返回结果信息发送MQ(done)–》数据对账系统监听消费–》存储jimdb
  • 4、数据清算:联合营销活动分三类触发清算事件
  • 日常清算:日常大促收品并按照规则进行同步,时间充足。活动开始前24h进行清算事件触发。
  • 限时清算:主要应对收品量小于千万,时间限制8h左右的情况。活动开始前5h进行清算事件触发。
  • 紧急清算:主要应对收品量具大但是由于管理员忘记或者其他原因未能提前发布,品量大于千万级别。活动开始前12h进行清算事件触发。
  • 5、异常预警:
    数据对账系统进行清算入账数据和出账数据,对比结果不一致,异常预警邮件和短信通知研发,并进入审核节点。对比结果一致,接入数据存储,作为流水日志存储。
  • 6、审核流水:
    研发收到报警,进入审核节点根据活动和异常sku信息定位数据不一致原因,根据预警和人工介入排查信息定位是否需要同步业务方和产品,或者从新跑数据调用同步促销系统。
  • 7、数据展示:
    根据流水日志存储,进行数据展示界面,提供数据分析给产品和研发更好的保障系统数据的安全性。
  1. 对账流程图
    在这里插入图片描述
  2. 对账中心功能模块分析
  • Q1:
    清算策略执行,异常预警,人工审核,重新跑数据时间周期多久?是否有足够的时间可控范围内
    A1:
    目前需要预估数据,根据jimdb运维反馈,单个key的数据比对不要超过5000,如果2亿数据,需要比对40w次,性能时间未能预估,需要压测执行参考性能。
  • Q2:
    数据对账系统的可用性
    A2:
    设计初衷,数据对账不止同步sku数据,其他所有系统交互都可以接入数据对账系统,数据对账系统只关心入账和出账比对结果,脱离核心业务系统逻辑,属于扩展系统。
  • Q3:
    数据对账系统的数据安全性
    A3:
    数据对账系统的数据安全性主要依赖于jimdb,通过rdb快照和aof日志恢复数据,但是不能保证100%数据恢复。
  1. 意外数据恢复逻辑
  • 5.1. 意外数据恢复逻辑
    参考上述数据对账系统的数据安全性。
  • 5.2. 对帐及异常恢复逻辑
    通过人工审核,重新跑数据或者及时根据当时情况作出应急措施预案。

(3)系统细节方案设计
3.1)项目简化初步排期
在这里插入图片描述
3.2)建立资料共享文件夹GitHub或者SVN(持续交付和资料共享):
在这里插入图片描述
(4)实施验收

这篇关于从0到1设计一个高可用数据对账系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/415806

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设