在需求高并发的情形下,系统如何控制并发需求的资源分配?

例如:如何保证在热门线路的车票发售不会出现超售的情况。能否解释下联网售票和移动支付时的业务逻辑,并说明系统如何控制并发需求的资源分配。显示全部

例如:如何保证在热门线路的车票发售不会出现超售的情况。能否解释下联网售票和移动支付时的业务逻辑,并说明系统如何控制并发需求的资源分配。

收起
参与14

查看其它 2 个回答tangguobing的回答

tangguobingtangguobing系统架构师IBM

数据必须实时一致性,才能保证不会超售。电子客票的移动支付业务要求很高,更像银行,因为一旦支付成功, 不能马上生效,如果保证客运站能够实时看到数据提供客票。 公路客票实际就是联机交易:客户并发量大,交易响应实时性要求高。交易需要满足原子性、一致性、隔离性和持久性,要求具备ACID的特性,否则在事务处理的过程中无法保证数据的完整一致性。

- A(Atomicity,原子性):整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

- C(Consistency,一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。

- I(Isolation,隔离性):两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。

- D(Durability,持久性):在事务完成以后,该事务所对数据库所作的更改会持久的保存在数据库之中,并不会被回滚交易处理涉及产品面广,相应的数据库实体较多并结构复杂

例如,淘宝的订单处理是比银行的凭证更简单的业务类型,而支付交易基本也只是完成银行内部转账的交易

基于银行这种多样化的数据信息,无非分为两种数据基本处理策略-数据实时强一致性(ACID)和基本可用最终一致(BASE)。以帐务处理为例,解释他们的区别:

如果接受BASE计算模式,以下场景会发生:

•你到银行存了1000元,当天查询银行存款发现账户上没有这1000元,但是银

行承诺第二天系统会自动补上,你能接受吗?还会在这家银行继续存款吗?

•如果双十一在淘宝上您用1000元买了一些打了三折优惠的正品(平日最低八

折),你当天发现购物清单和账户上的余额对不上,多扣了1000元,但是淘宝承第二天系统会自动补上,你能接受吗?你明知道同样扣错款的事情会发生,明年的双十一你还会在淘宝上抢购商品吗?

BASE的数据处理策略不适用于电子客票支付清算业务,我们的企业可能投资再大的资源从应用层面解决事务的完整性和数据完整性吗?

银行交易事务

ACID:整个事务中的所有操作,要么全部完成,要么全部不完成,事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,数据库的完整性没有被破坏。两个事务的执行是互不干扰的。在事务完成以后,该事务所对数据库所作的更改会持久的保存在数据库之中

分布式计算中由于部分部件失效(尤其是网络)会产生业务操作是否生效,对于非幂等操作如果没有完善的应用处理将会产生1000亿转帐多次重复造成千亿元错帐。

硬件生产 · 2016-05-12
浏览2588

回答者

tangguobing
系统架构师IBM
擅长领域: 存储服务器灾备

tangguobing 最近回答过的问题

回答状态

  • 发布时间:2016-05-12
  • 关注会员:4 人
  • 回答浏览:2588
  • X社区推广