4. 什么是分布式事务?到此为止,所介绍的事务都是基于单数据库的本地事务,目前的数据库仅支持单库事务,并不支持跨库事务 。而随着微服务架构的普及,一个大型业务系统往往由若干个子系统构成,这些子系统又拥有各自独立的数据库 。往往一个业务流程需要由多个子系统共同完成,而且这些操作可能需要在一个事务中完成 。在微服务系统中,这些业务场景是普遍存在的 。此时,我们就需要在数据库之上通过某种手段,实现支持跨数据库的事务支持,这也就是大家常说的“分布式事务” 。
这里举一个分布式事务的典型例子——用户下单过程 。
当我们的系统采用了微服务架构后,一个电商系统往往被拆分成如下几个子系统:商品系统、订单系统、支付系统、积分系统等 。整个下单的过程如下:
- 用户通过商品系统浏览商品,他看中了某一项商品,便点击下单
- 此时订单系统会生成一条订单
- 订单创建成功后,支付系统提供支付功能
- 当支付完成后,由积分系统为该用户增加积分
5. CAP理论CAP理论说的是:在一个分布式系统中,最多只能满足C、A、P中的两个需求 。
CAP的含义:
- C:Consistency 一致性
- 同一数据的多个副本是否实时相同 。
- A:Availability 可用性
- 可用性:一定时间内 & 系统返回一个明确的结果 则称为该系统可用 。
- P:Partition tolerance 分区容错性
- 将同一服务分布在多个系统中,从而保证某一个系统宕机,仍然有其他系统提供相同的服务 。
对于一个业务系统来说,可用性和分区容错性是必须要满足的两个条件,并且这两者是相辅相成的 。业务系统之所以使用分布式系统,主要原因有两个:
- 提升整体性能
- 当业务量猛增,单个服务器已经无法满足我们的业务需求的时候,就需要使用分布式系统,使用多个节点提供相同的功能,从而整体上提升系统的性能,这就是使用分布式系统的第一个原因 。
- 实现分区容错性
- 单一节点 或 多个节点处于相同的网络环境下,那么会存在一定的风险,万一该机房断电、该地区发生自然灾害,那么业务系统就全面瘫痪了 。为了防止这一问题,采用分布式系统,将多个子系统分布在不同的地域、不同的机房中,从而保证系统高可用性 。
此外,可用性对业务系统也尤为重要 。在大谈用户体验的今天,如果业务系统时常出现“系统异常”、响应时间过长等情况,这使得用户对系统的好感度大打折扣,在互联网行业竞争激烈的今天,相同领域的竞争者不甚枚举,系统的间歇性不可用会立马导致用户流向竞争对手 。因此,我们只能通过牺牲一致性来换取系统的可用性和分区容错性 。这也就是下面要介绍的BASE理论 。
6. BASE理论CAP理论告诉我们一个悲惨但不得不接受的事实——我们只能在C、A、P中选择两个条件 。而对于业务系统而言,我们往往选择牺牲一致性来换取系统的可用性和分区容错性 。不过这里要指出的是,所谓的“牺牲一致性”并不是完全放弃数据一致性,而是牺牲强一致性换取弱一致性 。下面来介绍下BASE理论 。
推荐阅读
- 用微PE在UEFI+GPT模式下安装WIN7、WIN10
- 微服务架构下:MySQL5.7新特性--官方高可用方案MGR介绍
- Nginx 静态文件服务配置及优化
- mysql服务器在无操作超时主动断开连接的问题
- 读书显微镜 人类显微镜能看到最小的东西
- 员工离职的22个法律要点
- 微信查看步数的方法
- 微信电脑版有三个版本,你知道哪个最好用吗?
- 微信绑定了银行卡,为何会自动扣款,原来是这个设置没关闭
- 微信拍拍,怎么修改内容?只需简单四步