分布式数据一致性

一、分布式环境

1.1 分布式的特点

  • 分布性:分布式系统中的多台计算机都会在空间上随意分布。
  • 对等性:集群中没有主/从节点之分,所有节点都是对等的;在分布式系统中,为了对外提供高可用的服务,我们常常会对数据和服务进行副本处理。
  • 并发性:多个节点并发操作共享资源,比如我们分布式存储如何准确并高效地协调分布式并发操作。
  • 缺乏全局时钟:分布式系统中因为没有全局时钟序列控制,所以事务的先后顺序无法确定
  • 故障总是会发生

1.2 分布式环境的各种问题

  • 通信异常
    分布式系统中个计算机之间是通过网络进行通信的。由于网络本身的不可靠性,每次网络通信都会伴随着网络不可用的风险。即使分布式系统各节点之间的网络通信能够正常进行,其延时也会远远大于单机操作。在分布式系统中,消息延时和消息丢失非常普遍。
  • 网络分区
    当网络发生异常情况,可能导致分布式系统中某些节点之间能够正常通信,而某些节点之间无法通信——该现象就是网络分区,就是俗称的『脑裂』。当网络分区出现时,分布式系统就会出现局部小集群,小集群内计算机可以相互通信,小集群之间计算机无法通信。这就对分布式一致性提出了非常大的挑战。
  • 三态
    因为在分布式系统中,网络可能会出现各式各样的问题,因此分布式系统的每一次请求和响应,存在特有的『三态』概念,即成功、失败与超时。在传统的单机系统中,应用程序在调用一个函数之后,能够得到一个非常明确的相应:成功或失败。而在分布式系统中,由于网络是不可靠的,当网络出现异常的情况下,就可能出现超时现象,发生消息丢失现象。
  • 节点故障
    节点故障是分布式环境下一个比较常见的问题,指的是组成分布式系统的服务器节点出现宕机或『僵死』现象。通常根据经验来说,每个节点都有可能出现故障,并且每天都在发生。

二、一致性定义

2.1 CAP理论

  • C 一致性: 分布式环境中,一致性是指多个副本之间,在同一时刻能否有同样的值

  • A 可用性: 系统提供的服务必须一直处于可用的状态。即使集群中一部分节点故障。

  • P 分区容错性: 系统在遇到节点故障,或者网络分区时,仍然能对外提供一致性和可用性的服务。以实际效果而言,分区相当于通信的时限要求。系统如果不能在一定实现内达成数据一致性,也就意味着发生了分区的情况。必须就当前操作在 C 和 A 之前作出选择

在这里插入图片描述

2.2 常见场景

  • CA without P:
    在分布式环境中,P 是不可避免的,天灾(某软公司的Azure被雷劈劈中)人祸(某里公司 A 和 B 机房之间的光缆被挖断)都能导致P

  • CP without A:
    相当于每个写请求都须在Server之前强一致。P (分区)会导致同步时间无限延长。这个是可以保证的。例如数据库的分布式事务,两阶段提交,三阶段提交等

  • AP without C:
    当网络分区发生,A 和 B 集群失去联系。为了保证高可用,系统在写入时,系统写入部分节点就会返回成功,这会导致在一定时间之内,客户端从不同的机器上面读取到的是数据是不一样的。例如 redis 主从异步复制架构,当 master down 掉,系统会切换到 slave,由于是异步复制,salve 不是最新的数据,会导致一致性的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值