好顺佳集团
2022-07-13 09:01:10
2619
内容摘要:errorerror对系统的影响是一致的。目前,账户系统主要根据业务需求实现了几个幂等性:1.充值序列号在充值过程中唯一处理。外部调用充值接口时,传递一个唯一的序列号。如果判断系...
errorerror对系统的影响是一致的。
目前,账户系统主要根据业务需求实现了几个幂等性:
1.充值序列号在充值过程中唯一处理。外部调用充值接口时,传递一个唯一的序列号。如果判断系统中存在该序列号,则会返回并多次调用,而不累积账户。
2、外部唯一ID对于奖惩是幂等的。调用者会传入唯一id,根据唯一id判断奖惩是否已经清零并记录。
3.订单不同,因为订单有退款流程。如果订单是唯一的,则在订单退款时无法区分订单是新增还是退款。在这种情况下,账户金额可能不准确。因此,使用票据金额的净额。
什么是订单净额?例如,商户首次支付的金额,转入会计系统进行结算。例如,如果通过支付宝支付100元,则商户将获得100元。下一次订单退款,假设退90元。 (此时交易系统会将订单的实际支付金额传给记账系统,即10元)。其实这一次,商家需要输入-90元而不是10元。这次的账单金额是10元和10元。旧金额 100 被净额,净额结果用于结算和分录。
4. 提现失败,将被退回。根据申请提现生成的提现id,查看账户流量表,查看是否有提现,没有返回提现。根据流量金额,反向生成流量返回记录并入账,保证幂等性。
二、数据一致性
1、本地交易
我们按照业务线对数据库进行划分,使得同一条业务线上的操作都落在同一个数据源上,使用本地事务进行数据的访问和更新,从而保持数据的一致性。
2. 灵活交易(需要幂等)
主要采用TCC模式和交易补偿模式。
T:试试。完成所有业务检查,搁置所需的业务资源);
C:确认。真正执行业务,不做任何业务检查,只使用Try阶段预留的业务资源;
C:取消。取消业务的执行,释放资源。
在 Try 部分,对数据执行验证。验证通过后,预留数据资源。在Confirm阶段,只对数据进行直接操作,不进行校验处理,只对保留的部分数据进行操作。如果发生取消操作,则将保留的操作返回到帐户。 TCC模式主要用于余额消费。商户只能用余额支付时,先冻结余额支付的金额,实际结账时,仅使用第一部分冻结金额,期间不进行验证。订单付款后,即被冻结。这部分金额是实际扣除的。如果中间订单被取消,冻结的金额将被退回,以保证实际消费时账户中的金额是充足的,无需重复检查。
事务补偿是操作失败后的补偿。申请提款时,账户金额将被扣除。只要申请提现成功,账户金额就会被扣除。实际提款结果将通知会计系统。如果提现失败,会计系统会查询提现系统的ID,根据提现申请时生成的账户生成提现失败返回流,并根据返回流更新账户金额。
3.消息队列
交易系统向会计系统发送异步消息。计费系统处理成功后,确认确认消息;如果处理失败,确认消息将不会被确认。消息系统用于通过重复发送机制再次发送消息,以保证计费系统中的每条消息都能被成功处理。但是可能出现ack消息后,消息系统并没有收到,所以会重复发送。因此,使用消息队列ack机制,必须保证幂等性。
4.分布式锁
直接锁定资源,避免了多节点操作造成的数据不一致。它仅在有硬业务需求时使用。目前用于控制提款申请的频率。
以上就是58到家账户会计系统的介绍。
转载/投稿:marketing@返回搜狐,查看更多
责任编辑:
上一篇:办公室写公司名下做账
下一篇:滨湖区记账报税收费标准
张总监 13826528954
限时领取创业礼包
0元公司注册
地址安全挂靠
名称、法人、股权等变更
在线免费核名
所有服务
您的申请我们已经收到!
专属顾问会尽快与您联系,请保持电话畅通!