分布式事务和金融交易的关系(没关系)

来源:互联网 发布:react.js和angular.js 编辑:程序博客网 时间:2024/04/29 03:19

分布式事务和金融交易的关系(没关系)

287854442 写道
bobotc 写道
确切的说银行项目是没有使用到事务的。。


不使用事务,那使用什么来保证安全性和可靠性呢?


确切地说,应该是不用分布式事务(如XA事务),尤其是局域网络之外的分布式事务。

分布式事务相对本地事务来说,虽然都是事务,有相同的或类似的结果预期,但实现方式及其效率、稳定性、可靠性差别巨大。具体细节分别可以写成两本厚厚的书了,抱歉我本人也没看全。

但是这种差别的存在应该被知道,分布式事务是基于网络交互的,网络的相对不稳定性和相对低效,分布式事务一样也避免不了。可以简单的理解分布式事务使用了一系列的交互机制/规则来保证数据状态的一致性,但这些规则细节对应用是透明的、不可控的,同时在此过程中产生的同步等待及资源竞争也是相对巨大的、不可控的,实际应用上是不能接受的。
针对具体的应用需求,我们完全可以设计完整的业务逻辑规则来保证可靠性和一致性。
数据库事务要求的OCID,和实际业务需求要求的可靠性、一致性以及所谓的资金安全是不一样的,OCID事务要求高得多,而且在数据状态完全一致之前对应用是透明的,在交易系统里可以不用这样严格。比如对资金安全来说,资金冻结在前,之后才允许交易,最后再同步交易状态(还有各阶段异常的补偿措施),这些阶段是分开的,在不同位置单独完成的,只要保证顺序,是不需要在一个数据库事务里完成的,也不需要都用实时、同步的方式完成。这种机制对系统的要求及其效率表现要比OCID事务机制高很多。当然,对应用系统的设计和开发的要求也要高一些。

实际应用还有一些其他约束也是分布式事务无法满足的,比如双方是独立的系统,甚至不是一个金融实体,要把双方的数据库纳入到一个分布式事务里是不可能的。很多介绍分布式事务的文章里会讲到资金转账的案例,即从A账户转账到另外一个系统的B账户,实际当中是否使用分布式事务来实现此功能,我对此表示相当的怀疑。

还有一个不能使用分布式事务的重要的因素,上面多次提到了透明和不可控。一旦发生异常,金融系统在业务规则上有它一套完整的补偿措施和干预手段,而且会涉及人工干预和不同金融实体的交涉。这些问题靠分布式事务是根本做不到的。

实际生活中,我们在跨行或异地存款、转账时,作为个人在完成转账后,经常还要过一段时间才能到账(当然也有很多提供实时到账服务的,不过这同样跟分布式事务无关),这已经是我们普遍接受的习惯性的事情,而且我们也不需要在到账之前一直在银行等待。

本质上来说,数据库的事务交易和金融交易完全不是一回事儿,是不同层面、不同领域的概念,只不过从技术实现角度上它们存在着一些必要的、习惯性的联系,所以容易在某些地方容易被混淆。我曾经在对一篇关于“Base 一种Acid的替代方案”的评论当中提到过,并非原作者的本意,但实际传播和读者理解过程中存在着把金融交易(商业交易)和数据库事务交易混淆的问题(尤其是所谓‘最终一致性'的概念),可惜并没有人认同,大概是做金融业务的人关心技术实现的不多,同时做技术研发实现的人关心金融业务的也同样不多吧。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 消防工程师考试题型 助理消防工程师 一级消防工程师论坛 注册消防工程师考试难度 一级消防工程师考试题型 注册二级消防工程师 注册消防工程师论坛 一级注册消防工程师教材 注册消防工程师报名 二级消防工程师考试科目 消防工程师报考条件二级 二级注册消防工程师报考条件 一级注册消防工程师论坛 二级消防工程师好考吗 一级注册消防工程师招聘 注册消防工程师难考吗 考一级消防工程师有用吗 消防工程师难度 一消防工程师 一级消防工程师考试难度 一级消防工程师好考吗 消防工程师待遇 注册消防工程师一级二级区别 一级注册消防工程师好考吗 注册消防工程师好不好考 一级消防工程师难度 二级注册消防工程师考试科目 二级消防考试时间 一级消防工程师招聘 陕西二级消防工程师报名时间 2017消防工程师考试时间 消防工程师代报名 消防技术综合能力 一级注册消防工程师报考条件 河北二级消防工程师报名时间 二级消防工程师报名条件 消防员考试报考条件 消防技术实务 一级注册消防工程师报名时间 消防安全工程师考试时间 消防注册工程师报考条件