您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

分布式系统常见概念

时间:2019-08-21 10:40:34  来源:  作者:



一、事物

事务是以可控的方式对数据资源进行访问的一组操作。

二、事物的四个特征-ACID

要注意的是事务能够通过AID来保证这个C的过程,C是目的,AID都是手段。

① Atomic原子性

事务必须是一个原子的操作序列集合,即可以是一个操作,也可以是多个操作。在这个事物执行的过程中,要么全部成功,则整个事物全部成功,如果有一项失败,则全部失败,整个事物回滚。

② Consistency

指系统从一个正确的状态,迁移到另一个正确的状态。即事物在执行前后,数据库都必须满足一条系统设置的约束条件,它依赖于应用层,也就是依赖于开发者。

③ Isolation

在并发的环境中,事物是相互隔离的,一个事物的执行,不能被其他事物所影响。在没有事物隔离的情况下可能会出现:

  • 脏读:比如事务T1将更新一批结果,然后事务T2读取该集合,此后T1因为某种原因而回滚之前的操作,这就导致了T2所读取到的数据是无效的。
  • 不可重复读:比如事物T1访问一批数据集并返回给应用层后还没有结束,事物T2也去访问并更新该数据集,此时事物T1再去读取该数据集,使得同一个事物多次读取的同一数据集不同(重点在于修改数据)。
  • 幻读:比如事物T1访问数据集,并修改了数据某一列的值,使其符合某以约束条件,同时,事物T2也在修改这个数据集,往这个数据集上插入一行新数据(不符合之前的约束条件)。过一段时间后事物T1再次访问数据集,发现还有未修改的数据,出现幻觉一般。(重点在于新增或者删除数据

四种隔离级别依次递增:

(1). 读未提交

事物没有提交的过程中允许其他事物去更改数据集。(相当于没有隔离,易发生脏读。)

(2). 读已提交

只允许读到已经提交的数据。第一次读原先的数据,第二次读其他事物修改后提交的数据(易发生不可重复读)

(3). 可重复读

保证在事务处理过程中,多次读取同一个数据时,其值都和事务开始时刻时是一致的。这可以保证原先的数据是一致的,但不能保证新加入的数据是否正确。(易发生幻读)

(4). 串行化

最严格的隔离级别,所有事物串行执行,不存在并发的情况,

④ Durability

一旦事物被提交,则它对数据库的操作将被永久保存,即使系统出现了宕机也可以进行恢复。

三、CAP定理

​ 一个分布式系统不可能同时满足一致性Consistency、可用性Availability、分区容错性Partition tolerance这三个基本需求,最多只能同时满足其中的两项。

① 一致性Consistency

这个一致性和ACID的一致性不同,这里的一致性指的是多个副本之间在初始一致(完全相同)的条件下执行一系列操作后,这些副本的数据仍然可以保持一致。

② 可用性Availability

系统可以提供正常的服务,主要有两个因素:响应时间以及返回正确的结果集。

③ 分区容错性Partition tolerance

分布式系统中即使出现了网络分区的情况,仍然能够满足一致性和可用性。

网络分区,是指分布式系统中,不同的节点分布在不同的子网络(机房/异地网络)中,由于一些特殊的原因导致这些子网络之间出现网络不连通的状态,但各个子网络的内部网络是正常的,从而导致整个系统的网络环境被切分成了若干孤立的区域。组成一个分布式系统的每个节点的加入与退出都可以看做是一个特殊的网络分区

三者取其二

  • CA without P:这个时候就相当于放弃了分布式系统的架构,放弃了系统的可扩展性,系统只在单机上运行。
  • CP without A:如果不要求A(可用)。达到C(一致)需要P(分区)通过网络完全同步,会导致同步时间无限延长。
  • AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。

对于分布式系统来说,P是不能放弃的(可以进行优化),因此通常在可用性和一致性之间权衡。

四、BASE定理

Basically Available(基本可用)、Soft state(软状态)、Eventually consistent(最终一致性)

  • 基本可用(Basically Available)
  • 基本可用是指分布式系统在出现不可预知的故障的时候,允许损失部分可用性,但不等于系统不可用。例如牺牲部分响应时间、以及功能上的损失(高峰期,屏蔽一些功能使得服务降级)
  • 软状态(Soft state)
  • 与硬状态相对,即是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
  • 最终一致性(Eventually consistent)
  • 强调系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。其本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

可以看出BASE定理是通过弱化一致性来获得可用性,它允许数据在一段时间内是不一致的,但通过一定的时间最终达到一致状态。

 



Tags:分布式系统   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  Tags: 分布式系统  点击:(23)  评论:(0)  加入收藏
分布式一致性算法概要随着各种高并发访问、海量数据处理等应用场景越来越多,为了应对这些使用场景,分布式系统应运而生。分布式系统得以发展,得益于诸多优点,比如:可以避免 单点...【详细内容】
2021-04-13  Tags: 分布式系统  点击:(238)  评论:(0)  加入收藏
分布式系统的经典理论分布式系统从诞生到现在已经有几十个年头了,其中伴随着一些很重要的基础理论,正是这些影响深远的基础理论,奠定了分布式系统的坚实基础,造就了分布式领域的...【详细内容】
2021-04-13  Tags: 分布式系统  点击:(263)  评论:(0)  加入收藏
分布式理论知识1、分布式系统架构1.1基础概念分布式 : 将一个单体项目分成很多个模块,各个模块协同工作,各个模块构成了分布式系统集群:针对单个模块或者单个系统在多台服务器上...【详细内容】
2021-01-28  Tags: 分布式系统  点击:(111)  评论:(0)  加入收藏
一致性问题一致性问题是分布式领域最重要、最基础的问题。一致性/Consistency,是说在有多个服务节点的情况下,执行一些列操作,在约定协议的保障下,使得他们对外的处理结果,能达...【详细内容】
2020-12-15  Tags: 分布式系统  点击:(149)  评论:(0)  加入收藏
在分布式系统,尤其是微服务系统中,一次外部请求往往需要内部多个模块,多个中间件,多台机器的相互调用才能完成。在这一系列的调用中,可能有些是串行的,而有些是并行的。在这种情况...【详细内容】
2020-12-11  Tags: 分布式系统  点击:(158)  评论:(0)  加入收藏
现如今可谓是微服务、分布式、IoT(物联网)横行的时代,作为一名开发者始终还是要保持一定的危机意识,特别是在日常的项目开发中,若是有机会接触到一些关于微服务、分布式下的应用...【详细内容】
2020-12-01  Tags: 分布式系统  点击:(114)  评论:(0)  加入收藏
分布式系统如何寻址?通过 RPC 框架,能够解决服务之间的跨网络通信问题,是微服务改造的基础。服务拆分之后,需要维护更多细粒度的服务,这样就涉及到 RPC 客户端服到服务端的 部署...【详细内容】
2020-11-04  Tags: 分布式系统  点击:(103)  评论:(0)  加入收藏
上一篇《CAP》写完之后,我又反复回看了多次,发现最后的一部分表达CAP、ACID、BASE、“BACP(自造)”关系时有一些问题,并且不是很严谨,但是无奈已经发送过的内容,无法支持修改,并且有挺多小伙伴都在私聊我确认细节,这里我来重...【详细内容】
2020-09-16  Tags: 分布式系统  点击:(46)  评论:(0)  加入收藏
介绍OAuth(开放授权)是一个开放标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方应用或分享他们数据的所有内容。OAuth...【详细内容】
2020-08-18  Tags: 分布式系统  点击:(65)  评论:(0)  加入收藏
▌简易百科推荐
为了构建高并发、高可用的系统架构,压测、容量预估必不可少,在发现系统瓶颈后,需要有针对性地扩容、优化。结合楼主的经验和知识,本文做一个简单的总结,欢迎探讨。1、QPS保障目标...【详细内容】
2021-12-27  大数据架构师    Tags:架构   点击:(5)  评论:(0)  加入收藏
前言 单片机开发中,我们往往首先接触裸机系统,然后到RTOS,那么它们的软件架构是什么?这是我们开发人员必须认真考虑的问题。在实际项目中,首先选择软件架构是非常重要的,接下来我...【详细内容】
2021-12-23  正点原子原子哥    Tags:架构   点击:(7)  评论:(0)  加入收藏
现有数据架构难以支撑现代化应用的实现。 随着云计算产业的快速崛起,带动着各行各业开始自己的基于云的业务创新和信息架构现代化,云计算的可靠性、灵活性、按需计费的高性价...【详细内容】
2021-12-22    CSDN  Tags:数据架构   点击:(10)  评论:(0)  加入收藏
▶ 企业级项目结构封装释义 如果你刚毕业,作为Java新手程序员进入一家企业,拿到代码之后,你有什么感觉呢?如果你没有听过多模块、分布式这类的概念,那么多半会傻眼。为什么一个项...【详细内容】
2021-12-20  蜗牛学苑    Tags:微服务   点击:(9)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  青锋爱编程    Tags:后台架构   点击:(21)  评论:(0)  加入收藏
在了解连接池之前,我们需要对长、短链接建立初步认识。我们都知道,网络通信大部分都是基于TCP/IP协议,数据传输之前,双方通过“三次握手”建立连接,当数据传输完成之后,又通过“四次挥手”释放连接,以下是“三次握手”与“四...【详细内容】
2021-12-14  架构即人生    Tags:连接池   点击:(17)  评论:(0)  加入收藏
随着移动互联网技术的快速发展,在新业务、新领域、新场景的驱动下,基于传统大型机的服务部署方式,不仅难以适应快速增长的业务需求,而且持续耗费高昂的成本,从而使得各大生产厂商...【详细内容】
2021-12-08  架构驿站    Tags:分布式系统   点击:(23)  评论:(0)  加入收藏
本系列为 Netty 学习笔记,本篇介绍总结Java NIO 网络编程。Netty 作为一个异步的、事件驱动的网络应用程序框架,也是基于NIO的客户、服务器端的编程框架。其对 Java NIO 底层...【详细内容】
2021-12-07  大数据架构师    Tags:Netty   点击:(17)  评论:(0)  加入收藏
前面谈过很多关于数字化转型,云原生,微服务方面的文章。虽然自己一直做大集团的SOA集成平台咨询规划和建设项目,但是当前传统企业数字化转型,国产化和自主可控,云原生,微服务是不...【详细内容】
2021-12-06  人月聊IT    Tags:架构   点击:(23)  评论:(0)  加入收藏
微服务看似是完美的解决方案。从理论上来说,微服务提高了开发速度,而且还可以单独扩展应用的某个部分。但实际上,微服务带有一定的隐形成本。我认为,没有亲自动手构建微服务的经历,就无法真正了解其复杂性。...【详细内容】
2021-11-26  GreekDataGuy  CSDN  Tags:单体应用   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条