My Blogs
Posts tagged with "分布式系统"
谈谈对分布式系统原理的理解
Published 2021年12月12日 09:00 by james
TL;DR
分布式系统的三态:
成功
、失败
、超时(未知)
- 1 概念
- 1.1 模型
- 1.2 副本
- 1.3 衡量分布式系统的指标
- 2 分布式系统原理
- 2.1 数据分布方式
- 2.2 基本副本协议
- 2.3
Lease
机制 - 2.4
Quorum
机制 - 2.5 日志技术
- 2.6 …
数据一致性解决方案
Published 2021年11月11日 18:00 by james
数据一致性理论
在介绍分布式系统的数据一致性问题之前,我们先来了解一下副本的概念。分布式系统会存在许多异常问题,例如机器死机、网络中断、高并发下I/O瓶颈、数据库存储空间不足等。为了提供高可用服务,一般会将数据或者服务部署到很多机器上,这些机器中的数据或服务可以称为副本。将数据复制成多份不仅可以增加存储系统高可用性,而且可以增加读操作的并发性,如果其中任何一台机器出现故障,用户可以访问其他机器上的数据或服务。如何保证这些节点上的副本数据或服务的一致性,是整个分布式系统需要解决的核心问题,也就是本章提到的数据一致性问题。一般来说,数据一致性可以分成三类: 时间点一致性、事务一致性、应用一致性。 1. 时间点一致性: 也叫作副本一致性,如果所有相关的数据副本在任意时刻都是一致的,那么可以称作时间点一致性。 2. 事务一致性: 是指在一个事务执行前和执行后数据库都必须处于一致性状态。如果事务成功完成,那么系统中所有变化将正确地应用,系统处于有效状态;如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。 3. 应用一致性: 事务一致性代表单一数据源或者狭义上的数据库;广义上的数据可能包括多个异构的数据源,比如数据源有多个数据库、消息队列、文件系统、缓存等,那么就需要应用一致性,这里也称作分布式事务一致性。
数据一致性是架构师在设计一个企业应用系统数据架构时必须考虑的一个重要问题,尤其在互联网分布式架构环境下,一个完整的业务被拆分到多个分布式的应用系统中,数据一致性的问题就显得尤为突出。分布式系统采用多机器分布式部署的方式提供服务,必然存在着数据的复制。在分布式系统引入复制机制后,由于网络延时等因素,不同的数据节点之间很容易产生数据不一致的情况。复制机制的目的是保证数据的一致性,但是复制数据面临的主要难题也是如何保证多个副本之间的数据一致性。
数据一致性模型
分布式系统一般通过复制数据来提高系统的可靠性和容错性,并且将数据的不同副本存放在不同的机器中。由于维护数据副本的一致性代价高,因此许多系统采用弱一致性来提高性能,一些不同的一致性模型也相继被提出。在CAP中,P(分区容错性)无法避免,A(可用性)是所有大型业务比较看重的,那么C(一致性)如何演变呢?按照不同的角度,一致性可以分为客户端和系统端。从客户端角度看,就是客户端读写操作是否符合某种特性;从系统端角度看,就是系统更新如何复制分布到整个系统,以确保数据最终一致。 如果从客户端角度看,一致性又可以分为以下3种。 1. 强一致性(strong consistency): 在任何时候,用户或节点都可以读到最近一次成功更新的副本数据。这种一致性肯定是我们最想要的,但是很遗憾,强一致性在实践中很难实现,而且一般会牺牲可用性。 2. 弱一致性(weak consistency): 某个进程更新了副本的数据,但是系统不能保证后续进程能够读取到最新的值。比如某些缓存、网络游戏、网络电话等系统。 3. 最终一致性(eventual consistency): 最终一致性是弱一致性的一种特例。A进程更新了副本的数据,如果没有其他进程更新这个副本的数据,系统最终一定能够保证在后续进程中能够读取到A进程写入的最新值。但是这个操作存在一个不一致的窗口,也就是从A进程写入数据到其他进程读取A所写数据所需的时间。根据更新数据后各进程访问数据的时间和方式的不同,最终一致性又可以分为以下5种。 - 因果一致性( …
一致性相关概念
Published 2021年10月05日 18:00 by james
TL;DR
- 强一致性
- [ ] 弱一致性
- [x] 最终一致性
- 单调写一致性
- 单调读一致性
- [ ] 因果一致性
- [ ] 读你所写一致性
- 会话一致性
- [ ] 读你所写一致性
- [x] 最终一致性
一致性模型分类1
由于异常的存在,分布式存储系统设计时往往会将数据冗余存储多份,每一份称为一个副本(replica/copy)。这样,当某一个节点出现故障时,可以从其他副本上读到数据。可以这么认为,副本是分布式存储系统容错技术的唯一手段。由于多个副本的存在,如何保证副本之间的一致性是整个分布式系统的理论核心。
场景说明
我们以具体实例来说明各种一致性的具体含义。首先,定义以下场景及术语。
这个场景包含三个组成部分:
- 存储系统
: 存储系统
可以理解为一个黑盒子,它为我们提供了可用性和持久性的保证。
- 客户端A
: …