分布式系统概述

分布式系统特点

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

  • 分布性
  • 对等性
    没有主从之分
  • 并发性
  • 缺乏全局时钟
  • 故障总是会发生

分布式环境的各种问题

  • 通信异常
    消息丢失和消息延迟
  • 网络分区
  • 三态
    成功、失败、超时。分布式环境中,网络异常可能会造成超时,接收方收到之前消息丢失;接收方的回复传输过程中丢失。
  • 节点故障

分布式一致性问题

分布式系统一般会对一份数据进行多份备份,这样做的原因有:

  • 高可用,解决单点故障引起的不可用
  • 读高性能,多份副本可以同时提供读服务
    但是引入数据复制机制后,就可能会出现数据不一致的情况。

CAP理论

  • 一致性C
    无论访问哪个节点,得到都是一致的数据,但是有些情况下可能无法返回
  • 可用性A
    在有限的时间内返回结果,但是不保证数据是一致的
  • 分区容错性P
    当节点间出现任意数量的消息丢失或高延迟的时候,系统仍然可以继续提供服务。

一个分布式系统无法同时满足这三个需求。只要有网络交互就一定会有延迟和数据丢失,而这种状况我们必须接受,还必须保证系统不能挂掉。所以分区容错性(P)是前提,是必须要保证的。

  • 当选择了一致性(C)的时候,如果因为消息丢失、延迟过高发生了网络分区,那么这个时候,当集群节点接收到来自客户端的写请求时,因为无法保证所有节点都是最新信息,所以系统将返回写失败错误,也就是说集群拒绝新数据写入。
  • 当选择了可用性(A)的时候,系统将始终处理客户端的查询,返回特定信息,如果发生了网络分区,一些节点将无法返回最新的特定信息,它们将返回自己当前的相对新的信息。
    只有当发生分区故障的时候,也就是说需要 P 时,才会在 C 和 A 之间做出选择。而且如果各节点数据不一致,影响到了系统运行或业务运行(也就是说会有负面的影响),推荐选择 C,否则选 A。

事务

传统事务ACID

原子性、一致性、隔离性、持久性

分布式事务BASE

分布式系统无法实现一套严格满足ACID特性的分布式事务。为了构建一个兼顾可用性、一致性的分布式系统,提出了BASE理论。其核心思想是即使无法做到强一致性,每个系统可以根据自己的业务特点,采用适当方式使系统达到最终一致性。牺牲强一致性,换取可用性。

  • BA基本可用
    响应比较慢或者功能降级
  • S弱状态
    允许数据中间状态的存在,即允许数据同步存在延时
  • E最终一致性
    因果一致性、读己之所写、会话一致性、单调读一致性、单调写一致性
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容