CAP原理和数据高可用性

CAP原理和数据高可用性对网站而言,数据是最宝贵的资源,硬件可以购买,软件可以重构,但是数据(用户数据,交易数据,商品数据)一旦丢失,对网站的打击可以说是毁灭性的。数据高可用性数据高可用性包括如下几个方面的含义数据持久性保证数据可以持久存储,在各种情况下都不会出现数据丢失。为了实现数据持久性,不但在写入数据是需要写入持久性存储,还需要将数据备份到一个或多个副本,存放在不同的物理存储设备上,在某个存储故障发生是,数据不会丢失

大家好,又见面了,我是你们的朋友全栈君。

对网站而言,数据是最宝贵的资源,硬件可以购买,软件可以重构,但是数据(用户数据,交易数据,商品数据)一旦丢失,对网站的打击可以说是毁灭性的。

数据高可用性

数据高可用性包括如下几个方面的含义

数据持久性

保证数据可以持久存储,在各种情况下都不会出现数据丢失。为了实现数据持久性,不但在写入数据是需要写入持久性存储,还需要将数据备份到一个或多个副本,存放在不同的物理存储设备上,在某个存储故障发生是,数据不会丢失。

数据可访问性

在多份数据副本分别存放在不同存储设备的情况下,如果一个数据存储设备损坏,就需要将数据访问切换到另一个数据存储设备上,如果这个过程不能很快完成(终端用户几乎没有延迟感知),或者在完成过程中需要停止终端用户访问数据,那么这段时间数据是不可访问的。

数据一致性

在数据有多份副本的情况下,如果网络、服务器或者软件出现故障,会出现部分副本写入成功、部分副本写入失败,这也就造成了各个副本中的数据不一致,数据内容冲突。

具体来说,数据一致性又分为如下几点

数据强一致性
各个副本的数据在物理存储中总是一致的;数据更新操作结果和操作响应总是一致的,即操作相应通知更新失败,那么数据一定没有被更新,而不是处于不确定的状态(可能被更新,也可能没有被更新)。

数据用户一致
数据在物理存储中的哥哥副本的数据可能是不一致的,但是终端用户在访问时,通过纠错和校验机制,可以确定一个一致且正确的数据返回给用户。

数据最终一致
这是数据一致性中最弱的一种,即物理存储的数据可能是不一致的,终端用户访问的数据可能也是不一致的(同一用户连续访问,结果不同;或者不用用户通过是访问,结果不同),但系统经过一段时间的自我修复和修正,数据最终会达到一致。

由于难以满足数据强一致性,网站通常会综合成本、技术、业务场景等条件,结合应用服务和其他数据监控与纠错功能,是存储系统达到用户一致,保证用户访问数据的最终正确性。

CAP原理

CAP原理认为,提供数据服务的存储系统无法同时满足数据一致性(Consistency)、数据可用性(Availbility)、分区耐受性(Patition Tolerance,系统具有跨网络分区伸缩性)这三个条件,如图

这里写图片描述

在大型网站,数据规模总是急剧扩张的,因此可伸缩性即分区耐受性必不可少,规模变大以后,机器数量也会变得庞大,这时网络和服务器故障就会频繁出现,要想保证应用可用,就必须保证分布式处理系统的高可用性。所以在大型网站中,通常会选择强化分布式存储系统的可用性(A)和伸缩性(P),而在某种程度上放弃一致性(C)。一般来说,数据不一致通常出现在系统高并发或者集群状态不稳定(故障恢复、集群扩容…)的情况下,应用系统给需要分不是数据处理系统的数据不一致性有所了解并进行某种意义上的补偿和纠错,一笔I安出现系统数据不正确。

”双十一“期间,活动第一分钟就会出现千万级独立用户访问,这种极端的高并发场景对数据处理系统造成了巨大压力,较弱的数据一直想导致出现部分商品超卖现象(交易成功的商品数量>库存数量)
CAP原理对于可伸缩的分布式系统的设计具有重要意义,在系统设计开发过程中昂,不恰当地迎合各种需求,企图打造一个完美的产品,可能会使设计陷入两难境地,难以为继。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144636.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 二进制表示小数「建议收藏」

    二进制表示小数「建议收藏」二进制表示小数二进制表示小数TableofContents1.题目2.方法3.思路1题目给定一个数将其转换为二进制(均用字符串表示),如果这个数的小数部分不能在32个字符之内来精确地表

    2022年8月4日
    6
  • 能关闭一切进程的无敌命令

    能关闭一切进程的无敌命令

    2021年7月29日
    357
  • PhpSpreadsheet_中文在线集团简介

    PhpSpreadsheet_中文在线集团简介1、PhpSpreadsheet是什么PhpSpreadsheet是一个用纯PHP编写的库,提供了一组类,使您可以读取和写入不同的电子表格文件格式PhpSpreadsheet提供了丰富的API接口,可以设置诸多单元格以及文档属性,包括样式、图片、日期、函数等等诸多应用,总之你想要什么样的Excel表格,PhpSpreadsheet都能做到使用PhpSpreadsheet开发的PHP要求7.1或更高版本PhpSpreadsheet支持链式操作2、PhpSpreadsheet支持的文件格式

    2025年12月15日
    3
  • DenseNet详解[通俗易懂]

    DenseNet详解[通俗易懂]其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。书的购买链接 书的勘误,优化,源代码资源一、概述作为CVPR2017年的BestPaper,DenseNet脱离了加深网络层数(ResNet)和加宽网络结构(Inception)来提升网络性能的定式思维,从特征的角度考虑,通过特征重用和旁路(Byp…

    2022年9月29日
    2
  • sql模糊查询 like[通俗易懂]

    sql模糊查询 like[通俗易懂]like经常与where字句和通配符在一块进行使用,表示像啥啥,模糊查询通配符主要是_和%  %百分号表示零个,一个或多个字符  _下划线表示单个字符**注意:**1、MSAccess使用问号(?)而不是下划线(_)2、百分号和下划线也可以组合使用!   3、可以使用AND或OR运算符组合任意数量的条件语法:select*from表名where字段…

    2022年4月27日
    69
  • linux 时间戳转换/dmesg 时间转换

    linux 时间戳转换/dmesg 时间转换dmesg时间转换dmesg输出的格式不易查看,可以通过命令进行转换。记录如下:时间查看:date-d”1970-01-01UTC`echo”$(date+%s)-$(cat/proc/uptime|cut-f1-d”)+12288812.926194″|bc`seconds”/proc/uptime详解在Linux中

    2022年10月2日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号