云时代架构读后感15--分布式系统的数据一致性

原文地址:

https://mp.weixin.qq.com/s?__biz=MzU2NzEwMDc4OQ==&mid=2247483796&idx=1&sn=cf27b17cccbf0c8c15ba74fe49c4adfa&chksm=fca3158ecbd49c98ea4fb736069e5142229318b93c7985aaa9e758989201832ea51f56e92feb&mpshare=1&scene=23&srcid=0619vA9J3WWtQUVDJNtyy9IP#rd

分布式系统之所以产生,主要的两个目的就是“快”和“海量”。

这个“快”可以分为两个方面:

  • 第一个是系统的处理速度快。

  • 第二个是开发的速度快(历时短)。

这2点本质都是相同的,把一个动作或者一件事情拆成两部分或者多个部分去同时进行,使得整体的耗时缩短。

“海量”则是由于不存在无穷大的硬盘,所以我们需要把数据分别存储到不同的硬盘上,才能满足需求。

而分布式系统再带来了前面提到的好处的同时,也带来了业界普遍认为最大的问题 —— 数据一致性问题。

分布式就意味着分治与协作,一件事一个人只负责一部分。这些事情大家都可以同时进行,但是任一环节掉链子了,都是失败的。

当一个事情分成100个部分去做的时候,很可怕,从概率的角度来看,达到一致的概率是2/5050。

什么原因导致了数据不一致的产生?

一是程序设计问题,或者说代码写错了。

二是硬件的因素存在。

并且对我们这里的大部分人来说,硬件相比软件,我们的掌控力更弱。这其中,最为严重的属网络问题。

那么什么叫达到一致性?

在任意时间、任意位置看到的同一个事物是完全一致的。

然而在考虑时间维度的情况下,不存在真正意义上的一致。

所以我们在分布式系统中,也没有必要去达到真正的意义上的一致。因为越趋近于一致,系统相当于又归一成一个单体了,在某一个时刻,只能做一件事,完全丧失了分布式系统的两个目的之一“快”的优势。

大多数情况下,为了尽可能的“快”,系统中使用的大部分方案都是所谓的最终一致性,也就容忍一定条件下的不一致,优先保证局部一致,然后再通过一系列复杂的状态同步达到全局的一致。最终一致性很多可实现的分支,列出几种常见的,抛砖引玉一下:

  • 因果一致性:仅要求有因果关系的操作顺序得到保证。比如朋友圈的回复功能。问“饭吃了吗?”肯定得在回答“吃了”之前。

  • 读你所写一致性:文字看着别扭,但很好解释。比如你在朋友圈下面回复一句话,其它好友可以不用马上看到你的回复,但是你自己必须得马上看到,要不然回复到哪去了?

  • 会话一致性:与人的一次聊天可以理解为一次会话。聊天虽然也有一定的因果关系,但是大部分场景下更多的是逻辑上的先后关系。比如你阐述一个事情,分为3条信息:首先...,然后...,最后...。如果这里的一致性得不到保证那么可能会变成:最后...,首先...,然后...。

转载于:https://www.cnblogs.com/sakura--/p/11052700.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值