资讯专栏INFORMATION COLUMN

分布式事务(1)-概念篇

_ang / 1037人阅读

摘要:原则分布式系统中,数据一致性和响应速度是成反比的。总结分布式事务会结合上面三个概念进行实现,在实际开发中,就是根据具体业务在数据一致性和服务可用性两者之间进行权衡。

把个人理解的几个概念做了一个总结,更贴近开发工作,更直白通俗的总结(意味着不严谨,但能懂)。

ACID模型
单个关系型数据库就是用这个模型来保障高一致性和可用性的。

Atomicity原子性:一个事务中所有操作都必须全部完成,要么全部不完成。
Consistency一致性. 在事务开始或结束时,数据库应该在一致状态。
Isolation隔离层. 事务将假定只有它自己在操作数据库,彼此不知晓。
Durability. 一旦事务完成,就不能返回。
直白,简单的去理解

BASE理论
和ACID相反,分布式事务中我们无法做到强一致。
虽然可能不一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使分布式系统数据达到最终一致性。

Basically Available基本可用。支持分区失败(e.g. sharding碎片划分数据库)

Soft state软状态 状态可以有一段时间不同步,异步。

Eventually consistent最终一致,最终数据是一致的就可以了,而不是时时高一致。

CAP原则
分布式系统中,数据一致性和响应速度是成反比的。
要想多个系统数据一致,就需要时间进行同步;要想尽快响应用户,就要接受数据不一致的情况(往往就是业务权衡)。

CAP定理是由加州大学伯克利分校Eric Brewer教授提出来的,他指出分布式WEB服务无法同时满足一下3个属性:

数据一致性(consistency):

如果系统对一个写操作返回成功,那么之后的读请求都必须读到这个新数据;如果返回失败,那么所有读操作都不能读到这个数据,对调用者而言数据具有强一致性。

1. 简单理解: 要往十个系统里每个系统都增加一条数据,每个子系统上面都进行修改成功,这样就保证了数据一致,但是时间也会延长;

服务可用性(availability)

所有读写请求在一定时间内得到响应

1. 简单理解: 上面已经说到,为了保证数据一致性,我们需要延长时间。那为了减少响应时间,我们可能先在一个系统内增加一条数据,剩下的九个系统异步去添加,这就是牺牲数据一致性,换取可用性;

分区容错性(partition-tolerance) - 可靠性

在网络分区的情况下,被分隔的节点仍能正常对外服务,简单可理解为“可靠性”(两个系统外界看来就是整体,如果系统不能通信了,成为分区。 如果不能保证分区容错性,则节点不能正常服务,不能服务就谈不上什么事务了,所以分区容错性是肯定要保证的);

1. 分区容错性 的理解:多个系统组成一个分布式系统,外界看来这个系统是一个整体,一个区域。

2. 但是内部如果出现网络不通的问题,多个子系统就变成了孤岛,变成了多个分区,分区容错性就是指这种情况是,每个子系统要能够适应这种问题,能正常提供服务,虽然数据可能没同步到其他子系统,但总比系统不能访问要好 。

总结

分布式事务会结合上面三个概念进行实现,在实际开发中,就是根据具体业务在 数据一致性 和 服务可用性 两者之间进行权衡。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69217.html

相关文章

  • Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)

    摘要:协议是为分布式协调服务专门设计的一种支持崩溃恢复的一致性协议,这个机制保证了各个之间的同步。选主是协议中最为重要和复杂的过程。以实际效果而言,分区相当于对通信的时限要求。参考官方文档阿里巴巴为什么不用做服务发现定理的含义阮一峰 前言 同学们,在上一章中,我们主要讲了Zookeeper两种启动模式以及具体如何搭建。本章内容主要讲的是集群相关的原理内容,第一章可以当做是Zookeeper原...

    Olivia 评论0 收藏0
  • 后端经验

    摘要:在结构上引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取锁入队服务教程在它提出十多年后的今天,已经成为最重要的应用技术之一。随着编程经验的日积月累,越来越感觉到了解虚拟机相关要领的重要性。 JVM 源码分析之 Jstat 工具原理完全解读 http://click.aliyun.com/m/8315/ JVM 源码分析之 Jstat 工具原理完全解读 http:...

    i_garfileo 评论0 收藏0
  • Zookeeper学习系列【一】 教会你Zookeeper的一些基础概念

    摘要:具有不可分割性即原语的执行必须是连续的,在执行过程中不允许被中断。提供服务主要就是通过数据结构原语集机制达到的。子节点的版本号数据节点版本号版本号创建该节点的会话的。后位则为递增序列。 前言 最近加入了部门的技术兴趣小组,被分配了Zookeeper的研究任务。在研究过程当中,发现Zookeeper由于其开源的特性和其卓越的性能特点,在业界使用广泛,有很多的应用场景,而这些不同的应用场景...

    DevWiki 评论0 收藏0
  • [直播视频] 《Java 微服务实践 - Spring Boot 系列》限时折扣

    摘要:作为微服务的基础设施之一,背靠强大的生态社区,支撑技术体系。微服务实践为系列讲座,专题直播节,时长高达小时,包括目前最流行技术,深入源码分析,授人以渔的方式,帮助初学者深入浅出地掌握,为高阶从业人员抛砖引玉。 简介 目前业界最流行的微服务架构正在或者已被各种规模的互联网公司广泛接受和认可,业已成为互联网开发人员必备技术。无论是互联网、云计算还是大数据,Java平台已成为全栈的生态体系,...

    Enlightenment 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<