`

分布式系统的CAP原则

阅读更多
 (编写不易,转载请注明:http://shihlei.iteye.com/blog/2411612)

一 概述

分布式系统(多台服务器,通过网络相互协调,组成一个整体对外提供服务的系统)

 

(1)CAP原则:任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。

 

(2)CAP解释:

Consistency(一致性):数据在所有服务器上副本是否一致。 

Availability(可用性): 数据是否在一定时间内更新成功。

Partition tolerance(分区容忍性): 

分区:数据只存在于部分服务器。

分区容器性:数据保存在一个分区里,存在故障(网络慢,处理慢,或网络不可用),造成分区数据对于某些服务不可用,是否可以忍受。

 

二 CAP原则解释

(1)解释:

1)满足CA: 数据写入多个副本,一定写入成功,则要求不会产生故障造成分区(其实P一定保证不了,但是P的概率比较低)

2)满足CP: (强一致)所有副本要不写入成功,则视为处理成功,否则视为失败(出错几率增加,可用性下降)

3)满足AP: (弱一致)所有副本部分写入成功,则视为处理成功(数据在各个副本不一致,一致性下降)

 

(2)实践:

1)架构需要根据业务类型进行取舍,不要耗费精力设计同时满足CAP的分布式系统。

2)分布是系统,分区产生的概率小,但具有必然性,因此需要在可用性,一致性上进行取舍。目前大多数系统业务情况一般妥协一致性,换来高可用。

3)为解决强一致性造成可用性降低的问题,目前妥协的策略是BASE原则提出的最终一致性。

 

三 BASE原则

(1)原则:

基本可用(Basically Available)

软状态(Soft state)

最终一致(Eventually consistent)

 

(2)解释:

部分副本写入成功,视为成功,通过补偿机制,允许在一定时间内,失败的副本能写入成功。

 

四 关于一致性的冲突处理

(1)场景:

通过多台服务器修改相同的数据,要保证在所有副本服务器上按照相同的顺序执行修改,这样在所有副本上的最终一致性才是可靠的。

 

例如:

操作1 执行: A 机器 修改 数据记录 A 状态设置为有效

操作2 晚于1 执行 :B 机器 修改 数据记录 A 状态设置为废弃

 

若没有冲突处理的情况下,有些副本 A 是废弃的(正常想要的结果), 有些副本A 有效的(因为操作1 的同步操作因为故障灯原因,晚于 操作2 到达该副本)。

 

(2)解决方案:

        • 分布式锁:不允许同时修改。

        • Paxos:基于消息的一致性算法,保证在副本的上更新顺序是相同的。

        • 基于MQ:消息先写入MQ,由于MQ天然有顺序,所以操作一定可以按照顺序执行。

 

分享到:
评论

相关推荐

    分布式系统架构的基本原则和实践

    应用的高可用要求,故障转移分布式系统遵循几个基本原则CAPTheorem,CAP原理中,有三个要素:1.一致性(Consistency)2.可用性(Availability)3.分区容忍性(Partitiontolerance)CAP原理指的是,在分布式系统中这三个...

    分布式系统一致性(ACID、CAP、BASE、二段提交、三段提交、TCC、幂等性)原理详解1

    1背景分布式系统致性(ACID、CAP、BASE、段提交、三段提交、TCC、幂等性)原理详解-掘的是按照功能拆分,秉着 “专业的人干专业的事儿” 的原则,把

    分布式事务的详细介绍。

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、 Partition tolerance(分区容错性),三者不可得兼。 CAP原则是NOSQL数据库的基石。 分布式系统的CAP理论: ...

    【笔记】分布式系统核心问题概述(一)

    文章目录一、一致性问题1.定义2.一致性要求3.带约束的一致性二、共识算法1....  一致性(consistency):指对于分布式系统中的多个服务节点,给定一系列操作,在约定协议的保障下,试图使得它们对处理结果达成

    分布式事务实践 解决数据一致性

    5-1 CAP原则和BASE理论简介 5-2 分布式系统综述 5-3 SpringCloud微服务架构 5-4 实现registry 5-5 实现proxy 5-6 user服务 5-7 order服务 5-8 添加hystrix 5-9 使用feign 5-10 优化服务间调用 第6章 分布式事务实现...

    java面试最全八股文

    分布式系统的典型应用 分布式事务、分布式锁 常用的分布式事务解决方案介绍有多少种? 一、一致性理论 二、一致性模型 三、分布式事务解决方案 四、选择建议 分布式锁的几种实现方式 1. 使用Redis实现分布式锁 * ...

    分布式处理

    一、 分布式存储系统的设计原则: CAP理论:一个分布式存储系统不可能同时满足一致性、可用性和分区容错性这三个需求,最多能够同时满足两个,因此不要把精力浪费在如何设计才能同时满足CAP三者的完美分布式存储系统...

    java高级软件工程师教程快速入门Zookeeper+dubbo视频教程

    在大数据、分布式系统或架构中占有很重要的协调位置。 Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维...

    2021年数据库研究报告

    单体系统到分布式系统的变化增加了数据库实现ACID特性的难度,但许多环境下企业仍要求较强的一致性。经过多年的发展,各数据库厂商提出了多种分布式事务解决方案,例如两阶段提交(2PC)/三阶段提交(3PC)、TCC方案...

    微服务--分布式事务的实现方法及替代方案

    事务补偿机制:在事务链中的任何一个正向事务操作,都必须存在一个完全符合回滚规则的可逆事务.CAP理论:CAP(Consistency,Availability,PartitionTolerance),阐述了一个分布式系统的三个主要方面,只能同时择其二进行...

    系统架构设计理论与原则、负载均衡及高可用系统设计速记

    这里主要介绍几种常见的架构设计理论和原则,常见于大中型互联系统架构设计。1、什么是CAP著名的CAP理论是由Brewer提出的,所谓CAP,即一致性(Consistency)、可用性(Availability)和分区容错性...

    分布式理论及共识算法Raft详解

    在介绍CAP原则之前,我们首先来看一个大家比较熟悉的概念:ACID。它是指在数据库管理系统中为了保证事务的准确可靠所具备的四个特性,分别是:Atomciity(原子性):一个事务中的所有操作,或者全部完成,或者全部不...

    system-design-sonnets:系统设计概念和原则的回购,可帮助其逐步发展为架构师角色以及帮助建立基于产品的公司

    前言 system-design-sonnets是系统设计概念和原理的集合,这些概念和原理...分布式系统具有在不同节点(机器)上运行的块。这样可以提供分隔,并通过增加冗余/复制来帮助按需扩展体系结构。 系统设计-为何需要,简短介

    Java思维导图xmind文件+导出图片

    Zookeeper 分布式系统的基石 从0开始搭建3个节点额度zookeeper集群 深入分析Zookeeper在disconf配置中心的应用 基于Zookeeper Watcher 核心机制深入源码分析 Zookeeper集群升级、迁移 基于Zookeeper实现分布式...

    大规模网站架构PPT

    CAP原则 BASE策略 异步(MessageQueue) 数据库 数据的水平切分及垂直切分 数据库读写分离 避免分布式事务 反范式的数据库设计 负载均衡 DNS负载均衡 反向代理负载均衡 LVS 缓存 数据库缓存 服务器缓存/页面...

    大规模网站架构PPT文档

    CAP原则 BASE策略 异步(MessageQueue) 数据库 数据的水平切分及垂直切分 数据库读写分离 避免分布式事务 反范式的数据库设计 负载均衡 DNS负载均衡 反向代理负载均衡 LVS 缓存 数据库缓存 服务器缓存/页面...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    CAP BASE 中间件 数据库 mysql 存储引擎 索引 锁 oracle db2 缓存 redis 数据结构 持久 复制 cas 单线程 memcache eacache Tair 消息队列 jms Queue Topic kafka 持久 复制 Stream ...

    AmazonDynamo系统架构

    Amazon平台是一个由数百服务组成的面向服务的架构,其秉承高度去中心化、松散耦合、完全分布式的原则,具体架构参考下图1。图1Amazon系统架构在这种环境中,尤其需要一个始终可用的存储系统,由此,Dynamo诞生了。...

Global site tag (gtag.js) - Google Analytics