文档章节

分布式系统理论简介

你我他有个梦
 你我他有个梦
发布于 2017/02/23 15:00
字数 959
阅读 27
收藏 1

1.       分布式系统相关理论

1.1     CAP定理

一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance),3个属性只可能同时满足2个。

分区容忍性的解释:集群因通信故障而划分为多个时仍然可用。

CA系统

l  单服务器。

l  集群中出现”分区“,就不可用。

l  传统关系型数据库为代表

AP/CP系统

l  集群满足p时,需要在”一致性” 和“可用性”间权衡,还要看实际业务场景。

l  比如会牺牲部分一致性(eg:使用最终一致性),保证可用性,如Cassandra。

l  CP系统方面以Redis和HBase为代表,而MongoDB虽然默认情况下是CP类型,但可以设置为AP或者CP系统。比如当集群出现问题,节点有可能为了保证一致性而这时出现了不一致性那么拒绝对外提供服务。

1.2         BASE理论

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。接下来看一下BASE中的三要素:

1、基本可用

基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性----注意,这绝不等价于系统不可用。比如:

(1)响应时间上的损失。正常情况下,一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果,但由于出现故障,查询结果的响应时间增加了1~2秒。

(2)系统功能上的损失:正常情况下,在一个电子商务网站上进行购物的时候,消费者几乎能够顺利完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面。

2、软状态

软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。

3、最终一致性

最终一致性强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物ACID特性是相反的,它完全不同于ACID的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性和BASE理论往往又会结合在一起。

 

© 著作权归作者所有

上一篇: 分布式模型简介
下一篇: NoSQL介绍
你我他有个梦

你我他有个梦

粉丝 95
博文 110
码字总数 98858
作品 0
昌平
程序员
私信 提问
Redis(一)——NoSQL入门和概述

Redis(一)——NoSQL入门和概述 什么是NoSQL NoSQL=Not Only SQL,意为“不仅仅是SQL”,即非关系型数据库。 NoSQL特点 易扩展 大数据量,高性能 多样灵活的数据模型 Redis核心 KV:键值对 Ca...

ZGYSYY
2018/07/28
0
0
分布式事务柔性事务解决方案:可靠消息最终一致性(异步确保型) —— 一、大白话理论

分布式事务简介 理论不多说,谈起事务,必然就绕不过ACID。然而传统的分布式事务在当下的分布式、微服务结构中中并不太合适,数据在传统的分布式事务中会被锁住,而且还要应对XA协议带来的开...

Anur
2018/09/13
0
0
【OSC写书评赠书活动】《Puppet实战》

开源中国提醒您:放假可别只顾着吃喝玩乐呀,书还是要看的! 临近春节放假,大家放假终于不用忙着工作有时间做自己的事,看自己爱看的书了,我们也趁着这个时间段给大家奉上一本样章试读书以...

丫头潘潘
2014/01/21
4.4K
36
区块链不可能三角为什么不可突破

摘要 在1985年,由Fischer、Lynch和Patterson三位科学家发表的论文中,提出了FLP理论。FLP理论证明了,在一个完全异步的分布式系统中,如果有一个节点出现故障,没有任何一种共识协议,能够实...

NULS社区
02/25
0
0
OceanBase技术直播间开播啦!蚂蚁金服技术专家手把手教你搭建OB数据库~

OceanBase技术直播间是OceanBase为用户和技术爱好者带来的系列技术直播课程,由蚂蚁金服一线技术专家分享最全面的理论知识和最实用的技术实践,内容包含数据库内核系列、手把手实操系列和最佳...

荔子liqi
04/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式数据一致性

狼王黄师傅
58分钟前
1
0
经验

相信每位开发者在自己开发的过程中,都会反思一些问题,比如怎样提高编程能力、如何保持心态不砍产品经理、996 之后怎样恢复精力……最近开发者 Tomasz Łakomy 将他 7 年的开发生涯中学习到...

WinkJie
今天
4
0
从源码的角度来看SpringMVC

SpringMVC核心流程图 简单总结 首先请求进入DispatcherServlet 由DispatcherServlet 从HandlerMappings中提取对应的Handler 此时只是获取到了对应的Handle,然后得去寻找对应的适配器,即:H...

骚年锦时
今天
1
0
Android 9.0 某些应用无法访问网络

将App安装在 Android 9.0的设备上发现,竟然无法登录了,后来查阅资料后发现原来是Android 9.0默认使用https访问,因此如果服务器支持 https访问的话,直接将http改成https即可,如果服务器不...

lanyu96
今天
2
0
Gitlab利用Webhook实现Push代码后的jenkins自动构建

之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台。通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布。这种方式每次在发版的时候,需要人工去执行jenkins...

shzwork
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部