文档章节

CAP总结

markeloff
 markeloff
发布于 2016/06/02 11:16
字数 705
阅读 71
收藏 3

C   :一致性(consistency)其实就是数据库中的ACID

A   :可用性(availability)   对一个系统而言,所有的请求都应该在一段时间内‘成功’并且收到’返回’,其实就是不丢报文,总是能响应,可能有延迟。强调下,可用性是系统中每个没有问题的节点在接受请求的时候,能够正确响应。举个例子:ca集群下,如果出现分区,所有节点都无法运转,按照常规的“可用性”看的话,我们认为这种情况是缺乏“可用性的”,这里的“可用性”跟cap中的a是有区别的。a是有前提的,即针对于正常运转的节点

P   :分区容错(partiion-tolerance)所指就是分布式系统的容错性。节点crash或者网络分片都不应该导致一个分布式系统停止服务,放弃Partition-tolerance意味着把所有的机器搬到一台机器内部。也就是单点跟多节点的问题,多节点具有容错性,单点没有

假设两个节点集{G1, G2},由于网络分片导致G1和G2之间所有的通讯都断开了,如果在G1中写,在G2中读刚写的数据, G2中返回的值不可能G1中的写值。由于A的要求,G2一定要返回这次读请求,由于P的存在,也即是多节点情况下,其中一个节点的数据不是最新的,导致C一定是不可满足的。

·放弃P:如果想避免分区容错性问题的发生,一种做法是将所有的数据(与事务相关的)都放到一台机器上。虽然无法100%地保证系统不会出错,但不会碰到由分区带来的负面效果。当然,这个选择会严重影响系统的扩展性。单节点的典型代表就是关系型数据库,支持CA

·放弃A:相对于放弃“分区容错性”来说,其反面就是放弃可用性。一旦遇到分区容错故障,那么受到影响的服务需要等待数据一致,因此在等待期间系统就无法对外提供服务,也就是CP。如果不需要数据的强一致性,可以立即进行响应,会导致数据的不一致,也就是AP

·放弃C:这里所说的放弃一致性,并不是完全放弃数据的一致性,而是放弃数据的强一致性,而保留数据的最终一致性。在分布式环境中,放弃强一致性,可以立即进行响应,虽然数据会造成不一致。

base原则其实放弃c,实现最终一致性的AP

© 著作权归作者所有

markeloff
粉丝 5
博文 18
码字总数 23124
作品 0
南京
高级程序员
私信 提问
Web应用开发框架--Cap Framework

Cap Framework是个人学习Servlet使用过程中,模仿Spring/SpringMVC/Strust等制作的Web应用开发框架。 虽然,如今研究Servlet框架已经落伍,但是经历了开发过程中的各种折腾,能让我更深入地了...

Sel8616
2016/02/21
944
0
Go语言之数据类型总结

字符串:字符串是不可变的字节序列,本身就是一个复合结构。 头部指针指向字节数组,但是没有NULL结尾。默认以UTF-8编码存储Unicode字符,字面量里允许使用十六进制、八进制和UTF-8编码格式。...

棋帅小七
2017/12/23
0
0
从ACID到CAP/BASE

由集中式系统到分布式系统的发展,事务的原则也有原先的ACID发展成了CAP/BASE。 ACID 事务(Transaction)是由一系列对系统中数据进行访问和更新的操作锁组成的一个程序执行逻辑单元(Unit),狭...

ksfzhaohui
2016/11/29
621
0
分布式系统架构常识:CAP理论。

什么是CAP理论? 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后麻省理工学院的Seth Gilbert和NancyLynch从理论上证明了CAP,之后CAP理论正式成为分布式...

架构之路
2017/12/20
0
0
在 .NET Core 中使用 DiagnosticSource 记录跟踪信息

前言 最新一直在忙着项目上的事情,很久没有写博客了,在这里对关注我的粉丝们说声抱歉,后面我可能更多的分享我们在微服务落地的过程中的一些经验。那么今天给大家讲一下在 .NET Core 2 中引...

dotNET跨平台
2018/04/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
26分钟前
4
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
42分钟前
5
0
IT兄弟连 HTML5教程 HTML5表单 HTML表单设计1

表单是PHP程序中最常使用的收集站点访问者信息的数据输入界面。通过表单浏览器获取用户的输入数据,并传送给Web服务器的脚本程序中,以各种不同的方式进行处理。在表单中提供了多种输入方式,...

老码农的一亩三分地
43分钟前
4
0
武者Vue

本文转载于:专业的前端网站➼武者Vue 1 - Introduction2 - The Vue Instance3 - Data & Methods4 - Data Binding5 - Events6 - Event Modifiers7 - Keyboard Events8 - Two-Way Data......

前端老手
49分钟前
6
0
uni app 零基础小白到项目实战

$emit 子组件传给父组件$ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http'const now = Date.now || function() { return new Date().getTime......

达达前端小酒馆
59分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部