(本质上CAP的需求不一样、tradeoff不一样!)

何种架构才是银行的正确选择?我们从三个方面来分析论证。

一,分布式与集中式数据库的分别

在业务体系上,支付宝和银行在业务逻辑、监管方式、数据要求上完全不同;业务决定技术,这也造成了不同的技术路径。需要强调的是,尽管两种不同的技术路径,但技术原理却是相同的。分布式和集中式数据库各有优缺点,也就各有不同的适用环境。

2002年,麻省理工学院MIT的教授在数学上证明了CAP理论。在分布式计算(存储)的架构里,由于网络引起的时延是必然的(Partition Network Toleration),因此对于一个操作在数据一致性(C=Consistency)和数据可用性(A=Availability)方面必须取舍一个。

许多互联网的业务类型(电商、搜索引擎等等),可以接受最终的数据弱一致性,因此分布式计算模式加数据可用的高扩展架构成为Web2.0公司的平台基础。而对于金融业需要数据实时强一致性的业务,采用关系型商业数据库来满足ACID(代表Atomicity原子性、Consistency一致性、Isolation隔离性、Durability持久性,是实现实时强一致性的基础)也是历史的正确选择。

分布式计算、集中式计算不是谁替代谁,而是各有不同的用点,适合不同的业务场景需求。互联网应用确实将分布式计算带到了新的台阶,但是并没有突破计算机科学的CAP基本原理,因此有时候需要牺牲数据一致性换得处理能力的线形可扩展性。而银行业务需要注重数据的实时强一致性采用集中处理,在一个统一的唯一数据视图上进行横向和竖向的扩展来满足业务的吞吐量要求。所以银行的架构是集中和分布的综合体。

选择完整性/可用性(C/A)保证数据的强一致性事务处理交易,是银行在过去的三十几年的业务发展过程中要求遵循的基本架构及编程原则。采用数据库、交易管理中间件从系统级提供的数据强一致性,简化业务应用的编程使其致力于业务功能的实现是银行过去的最佳实践。因此,集中式计算体系依然至关重要。在支付宝交易中,这种保持数据弱一致性非事务处理交易,采用分布式计算则是最经济的选择。同理,与银行核心交易无关的外围业务也可以采用分布式架构,未来银行的架构一定是一种集中式和分布式混合体系。

二,平台型轻应用和纵向重度应用——支付宝和银行的本质

从两者本质上看,阿里有着互联网企业的重要特征:业务逻辑是平台型的轻应用,即商家卖货,消费者买货,阿里本身不涉及货;支付宝也是消费者和商家之间的买卖并行交易,支付宝本质是交易工具,本身不靠资金的多少生存。

而以商业银行为代表的金融体系则是靠资金来生存发展的,它的业务逻辑则是典型的重应用:比如银行业务从资产负债表的构成就主要分为三类:存款、借款、债券等负债业务,储备、投资、信贷、放款等资产业务,以及支付结算、基金托管、银行卡、担保、理财等中间业务。

因此,银行一定要做集中式处理,这不是简单的金额加减问题,要涉及到客户账,分户账,会计总账等系列后台逻辑数据的变更,所有的账务系统要有相应的规则统一管理。借和贷必须在一个逻辑处理事务单元实时完成并保证ACID。

而阿里的支付借和贷之间是脱钩的,个人支付宝帐户的扣款和商户的支付异步进行。支付往往滞后帐户扣款。因此仅仅是银行交易的一半途径且不遵循复杂的会计体系原则。

因此,两者的业务应用场景在本质是有区别的:支付宝只是做了支付这一步,而银行在支付的背后,需要有整个帐务逻辑和金融风险管控。后者要求每一步操作,不论是查询还是交易都必须有可跟踪的、有时间戳的日志。如果在银行帐务系统的处理上采用网上购物这种数据弱一致性非事务处理交易架构,错账、乱帐的风险会提高,由此产生金融风险、法律纠纷的风险提高。记得在银行未实现数据大集中之前,银行业务对帐的时间就很长,帐务出现差错,要追帐,查帐,纠错的压力也就相应而来。

三:OceanBase技术在金融业的适用分析

近几年,关于OceanBase数据库技术撑起双十一交易量的一系列媒体报道曾经引发热议,甚至有些报道中把它和异地多活也联系到了一起。那么这个承载电商海量交易的数据库能否为大规模银行联机事务处理系统带来帮助?甚至如某些宣传所说把事务处理推向异地多活?

(媒体报道截图)

经过多年对该技术发展的跟踪关注,以及对当前技术架构的剖析,还须认识到从它的架构特征来说是不适合承载银行大规模联机事务处理的。尤其不适用于随机更新交易需要数据实时强一致性的银行业务。银行业务需要实时帐务信息及会计规则、监管规则管控信息的统一视图。

单点更新架构的局限对电商业务负载和银行交易负载影响不同

OceanBase发布的文档表明,尽管OceanBase的分布式集群架构由多台服务器组成,但更新服务器(UpdateServer)是集群中唯一能够接受写入的模块,主要用于存储增量数据。同一时刻只有一台机器作为主更新服务器提供写服务,OceanBase的文档指出“单台更新服务器的处理能力总是有一定的限制。因此,更新服务器的硬件配置较高,如内存较大、网卡及CPU较好。”由此可以看到,执行更新服务的这个单点不但没有超越依靠追加硬件资源提升数据更新性能的纵向扩展路线,而且它还不能像DataSharing并行处理技术那样,在单台服务器硬件达到升级瓶颈时,通过横向扩展继续提升处理容量。

从业务负载特征上分析,OceanBase设计的出发点是满足查询交易占绝大多数,更新交易比例偏低的电商业务需求。因此它的设计思路就是把查询负载分发到多个静态数据服务器(ChunkServer),而把更新负载引导到单一的动态数据服务器(UpdateServer),这的确能够把写少读多的电商交易量支撑到相当业务规模,甚至满足金融行业的部分需求,例如历史数据查询。然而在银行联机事务处理中:即使通过柜面系统做一个账户余额查询的操作,往往后台系统也需要在数据库里记录下这个操作历史。这样高密度的数据库写入操作会使得OceanBase利用单点实现更新操作,且不支持横向扩展的架构问题严重地暴露出来。

一致性和高可用性难以兼得

OceanBase发布的技术文档表明:“当主 UpdateServer发生故障时:如果不要求强一致性,OceanBase内部可以自动做主备切换;如果要求强一致性,OceanBase内部不做自动切换,等确认数据没有丢失后再强制把某个备UpdateServer设置为主。”

显然这里一致性和数据服务的高可用性已经产生了冲突。这对银行业务意味着很大的风险,绝大多数银行关键业务系统既要求强一致性,又要求高可用性。一般都建立本地高可用环境,在单点故障时自动切换,保障业务连续运行,因此OceanBase的自动主备切换以牺牲一致性为代价不可取。

银行交易必须同时满足一致性和可用性。唯有确保交易数据的实时强一致性,否则造成金融风险后果是不堪设想的。银行系统由于需要承担社会民生稳定不可或缺的金融基本服务,因此其系统的设计比起电商的交易系统而言更加的复杂,在业务监管方面要接受银监会、外管局、公安局等多个部门的监管,业务必定要合规。例如,某部门列出一个黑名单,银行在每个关键点(比如存取款业务)都要检查,更何况这些年对反欺诈、反洗钱等的监管要求。所以说,即便是交易量同等规模,支付宝的复杂度远远比不上银行的复杂度。

综上所述,不难看出何种架构才是银行的正确选择。


=>更多文章请参考:《中国互联网业务研发体系架构指南》

=>更多行业权威架构案例及领域标准、技术趋势请关注微信公众号:

更多权威内容关注公众号:软件真理与光

为什么OceanBase不适合银行的三点思考相关推荐

  1. 男生学护理与计算机哪个最好,大学里面适合男生的三个专业,进去就成“系草”,就业非常容易...

    高考之后,考生就要填报高考志愿.每年的高考志愿填报都让很多考生很头疼,志愿填不好,浪费自己的分数,影响自己的一生.都说男怕入错行,女怕嫁错郎,放在志愿填报领域也是. 很多人觉得男生就该学土木工程.机械 ...

  2. 三本建筑学与计算机专业,填报三本志愿最适合选择这三个专业,毕业后前景不输重点本科生...

    虽然三本院校处在本科阶段最末端的排名,但是并不代表大家选择了三本就不会比其他本科生差,那么小编今天为大家准备了这篇填报三本志愿最适合选择这三个专业,毕业后前景不输重点本科生的相关讲解,大家一定要认真学 ...

  3. 大数据时代农商银行转型发展的思考

    借互联网思维 促农商行发展 --大数据时代农商银行转型发展的思考 如今,"互联网+"."大数据"."云计算"等互联网领域新名词层出不穷,在悄 ...

  4. 工商银行:IT新架构及银行IT架构转型思考

    在中国银行业,工商银行的信息化建设一直走在前列.1999年,正是工商银行率先在国内开展了银行数据大集中工程,此举为后来国内银行业信息化应用的快速发展奠定了坚实的基础. 从2014 年开始,工商银行就开 ...

  5. 计量经济学计算机答案第三章课后答案,复旦大学 经济学院 谢识予 计量经济学 计量经济学第三章思考练习题...

    计量经济学第三章思考练习题 1. 两变量线性回归模型适合研究的经济问题有哪些主要特征? 2. 若变量Y和X之间的关系为Y A(X 5)2e ,其中A. 为未知参数, 为随机误差,问能否用两变量线性回归 ...

  6. 工作处境不好的时候,学会三思(三种思考)

    回忆一下你的工作经历,有没有该努力的时候,你却放弃了?或者说,有没有该放弃的时候,最后却瞎努力一场? 为什么会出现这种情况呢?因为你不知道,如何进退有度.今天就来教你如何三思,思危.思退.思变. 最近 ...

  7. python 鱼骨图_数据分析必备的三种思考模型

    原标题:数据分析必备的三种思考模型 新人学习数据分析有个误区,认为Excel很Low,SQL做久了又是表哥表姐,学习python又陷入无尽的工具包中不能自拔,迷茫到找项目学习,结果是分析又不得要领,说 ...

  8. AI安全才刚刚开始 未来发展需要三方面思考

    近日,腾讯安全国际技术峰会在深圳成功召开.此次峰会由腾讯安全科恩实验室主办,并云集微软.Google.南洋理工大学.趋势科技.高通.滴滴等国际知名厂商,既有来自产业界的技术专家,也有来自学术界的资深学 ...

  9. BackSwap银行***利用三种全新技术清空银行帐户

    美国ESET公司的安全专家在最近发现了一种名为"BackSwap(由ESET检测为Win32/BackSwap.A)"的新型银行***,它采用了三种全新的技术从×××那里窃取资金, ...

最新文章

  1. 内部黑客讲述:Twitter 史上最大规模攻击事件始末!
  2. 7、redis之使用spring集成commons-pool来操作常见数据类型
  3. jQuery EasyUI布局容器layout实例精讲
  4. 自定义Dialog(图片,文字说明,单选按钮)----类ListPreference实现(2)
  5. 一个具体的例子学习SAP S/4HANA里Fiori应用的排错分析
  6. mysql 记录更新 内部_MySQL 入门(1):查询和更新的内部实现
  7. android客户端设计,Android客户端设计.ppt
  8. AtomicReference 和 volatile 的区别
  9. IP数据报格式,IP分片,IP编址,子网掩码
  10. MySQL MHA详解(一)——基本原理
  11. 【开发者笔记】利用ab命令对接口进行压力测试
  12. String,StringBuffer,StringBulilder之间的区别
  13. iOS开发之--NSPredicate
  14. Jlink20P接口定义
  15. KETTLE将本地图片抽取到oracle库
  16. cocos 微信登陆失败(笔记)
  17. idea 引入包报错:Unable to provision, see the following errors
  18. 深度学习-BP曲线拟合(预测)
  19. 苹果手机微信记录恢复最简单的恢复方法
  20. 【2019-2020春学期】数据库 教学 期末总结

热门文章

  1. 阿里云服务器相关操作
  2. 一文看懂膨胀(空洞)卷积(含代码)
  3. 线性空间的定义与性质
  4. 面试项目经理,这12个问题一定会被问到(建议收藏)
  5. Android系统消息推送
  6. 【OpenGL】(step1)开个窗口
  7. 2018上IEC计算机高级语言(C)作业 第3次作业
  8. 大学物理(英文版)笔记 chapter1 Measurement
  9. 使用python简单实现K核苷酸频率(KNF,k-nucleotide frequencies)或K-mer频率
  10. python pta实验八