ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

对账了解

2022-08-27 23:30:45  阅读:167  来源: 互联网

标签:记录 账户 对账 了解 余额 流水 交易 冗余


转自:https://zq99299.github.io/note-book/back-end-storage/01/04.html#为什么总是对不上账

1.对账介绍

对不上账 「是通俗的说法」,它的本质问题是,冗余数据的一致性问题。这里的冗余数据并 不是多余或者重复的数据,而是多份含有相同信息的数据。

比如,我们完全可以通过用户的每一笔充值交易数据、消费的订单数据,来计算出这个用户当前的账户余额是多少。也就是说,账户余额数据和这些账户相关的交易记录,都含有 「账户余额」 这个信息,即流水和余额之间就互为冗余数据。在设计系统的存储时,原则上不应该存储冗余数据,一是浪费存储空间,二是让这些冗余数据保持一致是一件非常麻烦的事儿。

但有些场景下存储冗余数据是必要的,比如用户账户的余额这个数据。这个数据在交易过程中会被 非常频繁地用到,总不能每次交易之前,先通过所有历史交易记录计算一下当前账户的余额,这样做速度太慢了,性能满足不了交易的需求。所以账户系统保存了每个用户的账户余额,这实际上是一种用 存储空间换计算时间 的设计。

但如果只记录余额信息,每次交易的时候更新账户余额,这样做有一个问题,如果账户余额被篡改,是没有办法追查的,所以在记录余额的同时,还需要记录每一笔交易记录,也就是账户的流水。记录流水,可以有效地修正由于系统 Bug 或者人为篡改导致的账户余额错误的问题,也便于账户系统与其他外部系统进行对账,所以 账户系统记录流水是非常必要的。

流水的数据模型至少需要包含:流水 ID、交易金额、交易时间戳以及交易双方的系统、账户、交易单号等信息。

2.事务保证数据一致性

不能提供  单独更新余额或者流水的功能,只提供交易功能。

需要在实现交易功能的时候,同时记录流水并修改余额,并且要尽可能保证,在任何情况下,记录流水和修改余额这两个操作,要么都成功,要么都失败。不能有任何一笔交易出现,记录了流水但余额没更新,或者更新了余额但是没记录流水。 

 

标签:记录,账户,对账,了解,余额,流水,交易,冗余
来源: https://www.cnblogs.com/BlueBlueSea/p/16631791.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有