设为首页 加入收藏

TOP

分布式系统概述
2019-05-11 02:29:58 】 浏览:50
Tags:分布式 系统 概述
版权声明:copyright by Shannon https://blog.csdn.net/Shannon076/article/details/80951607

目录:

  1. 分布式系统的特性
  2. 分布式系统面临的问题
  3. ACID和CAP理论

分布式系统的特点

分布式系统的定义

分布式系统是一个这样的系统,所有的软件和硬件组件分布在不同的网络计算机上,彼此之间通过网络进行通信和消息传递和协调的系统。

特点

1.分布性:系统中的多台计算机在空间上随意分布,并且分布的情况也会随时发生变化。
2.对等性:在分布式系统中,没有主机/从机之分,所有的机器都是对等的。
3.副本机制:指的是系统对数据和服务提供的一种冗余的方式。在分布式系统中,为了保障对外提供高可用的服务,往往需要对数据和服务进行副本处理。

3.1 数据副本:不同的节点上持久化同一份数据,当某一个节点上存储的数据丢失时,可以从其他副本节点上读取到同一份数据。
3.2 服务副本:多个节点提供相同的服务,每个节点都有能力接受来自外部的请求并进行相应的处理。

4.并发性:分布式系统的多个节点可能会并发的操作一些共享资源
5.缺乏全局时钟:在分布式系统中通过多个节点之间的相互通信来交互信息,但是很难定义两个事件究竟谁先谁后,缺乏一个全局的时钟序列控制机制。
6.故障总是会发生:任何在系统设计阶段考虑到的异常情况,在实际的运行过程中一定会发生,并且还可能会发生没有考虑到的问题。

分布式系统面临的问题

1.通信异常

分布式系统中的节点需要通过网络进行消息传递,但是网络具有非常明显的不可靠性,因此在通过网络进行收发消息的时候,极有可能会出现消息丢失或者消息延迟。

2. 网络分区

当网络发生异常情况时,导致分布式系统中的部分节点之间的延迟不断增大,最终导致系统中只有部分节点之间可以进行正常的通信,而另一部分节点则不能,这中现象就叫做网络分区,也叫做”脑裂”。当出现网络分区的时候,分布式系统会出现局部小集群,极端情况下,这些局部小集群可以独立完成原来需要整个系统才能完成的任务,包括对数据的事务处理。

3. 三态

在分布式系统中的一次请求和响应过程中,会存在”三态”的概念,即成功,失败,超时。在分布式系统中,绝大多数情况下,是可以接受到成功or失败的,但是由于网络的不可靠性,还可能会出现超时现象,比如请求没有发送到接收方,在发送的过程中出现了消息丢失;接收方成功接收到消息了,但是在回送响应的时候,发生了消息丢失。当发生这样的超时现象时,通信的发起方是没有办法确定请求是不是被成功处理了。

4. 节点故障

组成分布式系统的节点出现宕机或者重启,节点出现故障是经常发生的事情。

ACID和CAP

ACID https://blog.csdn.net/yuanlaishini2010/article/details/45789649

事务:事务是一系列对系统中数据进行访问和更新的操作序列集合,在计算机科学中的事务一般指的是数据库事务。事务为应用提供的帮助有:
  • 当多个进程并发访问数据库时,事务可以在这些进程之间提供一种隔离方法,防止彼此的操作互相干扰
  • 事务为数据库提供状态回滚机制
  • 事务提供了一种在异常情况下保持数据一致性的方法
原子性:事务的操作序列在一次操作的过程中,要么全部执行,要么全部不执行,必须是一个原子操作系列单元
一致性:事务的执行前后,数据库都必须处于一致性状态,事务的执行结果必须是让数据库从一种一致性状态转变到另一种一致性状态
隔离性:在并发环境下,事务的执行是相互隔离的,一个事务的执行不能被其他事务干扰。也就是说,不同事物并发操作相同数据的时候,每个事务都有各自完整的数据空间,一个事务内部的操作以及使用的数据对其他事务是隔离的,并发执行的各个事务之间不能相互干扰。
持久性:一个事务一旦被提交了,那么它对数据库中对应数据的状态变更就应该是永久性的,即使机器宕机或者重启,只要数据库可以重新启动,那么一定可以恢复到事务成功结束时的状态。

CAP https://www.cnblogs.com/bangerlee/p/5328888.html

分布式事务:在单机数据库中,我们很容易能实现一套满足ACID特性的事务处理系统,但随着分布式计算的发展,在分布式数据库中,数据分散在各个不同的机器上,如何对这些数据进行分布式的事务处理具有非常大的挑战。分布式事务是指,事务的参与者,支持事务的服务器,资源服务器以及事务管理器分别位于分布式系统的不同节点上。通常一个分布式事务会涉及到对多个数据源或业务系统的操作。一个分布式事务可以看做是由多个分布式的操作序列组成的。

CAP定理告诉我们一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本的需求,最多只能同时满足其中两项。
1 一致性:分布式系统中的一致性指的是多个数据副本之间应该保持一致的特性。在分布式系统中,如果对一个数据项更改之后,所有的用户都可以立刻读取到最新的修改后的值,那么改系统具有强一致性。
2 可用性:可用性指的是系统必须一直处于一种可用的状态下。主要指的是对用户的请求可以在”有限的时间内”给出”返回结果”。
3 分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然可以对外提供满足一致性和可用性的服务,除非整个网络都发生了故障。

在分布式系统中,满足分区容错性是一个基本的要求,一般的分布式系统都是放弃C(一致性),这里放弃一致性不是说不需要数据的一致性,而是放弃数据的强一致性,保留数据的最终一致性,承诺在一个”时间窗口”内达到一致性,具体需要多久,取决于数据副本在各个节点之间同步的时间长短。

Enjoy Yourself~

Any feedback or complain or requests of you, please send email to Feedback

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇图解ByteBuffer 下一篇Linux下yum命令安装MySQL

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目