CAP原理和数据高可用性

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

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

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

数据高可用性

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

数据持久性

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

数据可访问性

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

数据一致性

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

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

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

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

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

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

CAP原理

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

这里写图片描述

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c语言中system函数怎么用_system函数的返回值

    c语言中system函数怎么用_system函数的返回值C语言中如何使用system函数一.system函数c语言中的system()函数主要用于发出一个DOS命令,该函数已经收录在标准c库中,可以直接调用。使用时包含头文件<stdlib.h>补充:DOS:DOS是DiskOperatingSystem的缩写,即磁盘操作系统。它是一个基于磁盘管理的操作系统。DOS命令:是指DOS操作系统的命令,是一种面向磁盘的操作命令,主要包括目录操作类命令、磁盘操作类命令、文件操作类命令和其它命令。(学习DOS命令是控制微机的基础)提供用户使用的

  • c语言oj得pe,ACM入门之OJ~

    c语言oj得pe,ACM入门之OJ~所谓OJ,顾名思义OnlineJudge,一个用户提交的程序在OnlineJudge系统下执行时将受到比较严格的限制,包括运行时间限制,内存使用限制和安全限制等。用户程序执行的结果将被OnlineJudge系统捕捉并保存,然后再转交给一个裁判程序。该裁判程序或者比较用户程序的输出数据和标准输出样例的差别,或者检验用户程序的输出数据是否满足一定的逻辑条件。最后系统返回给用户一个状态:通过(Ac…

  • 聊一聊二维码扫描登录原理

    聊一聊二维码扫描登录原理

  • python数据可视化第三方库有哪些_数据可视化!看看程序员大佬都推荐的几大Python库…

    python数据可视化第三方库有哪些_数据可视化!看看程序员大佬都推荐的几大Python库…数据可视化是数据分析中极为重要的部分,而数据可视化图表(如条形图,散点图,折线图,地理图等)也是非常关键的一环。Python作为数据分析中最流行的编程语言之一,有几个库可以创建精美而复杂的数据可视化,允许分析人员和统计人员通过方便地在一处提供界面和数据可视化工具而轻松地根据其规范创建可视数据模型!MatplotlibMatplotlib是Python的数据可视化库和二维绘图库,它是Python社区…

  • 经常使用哈希函数的比較及其C语言实现「建议收藏」

    经常使用哈希函数的比較及其C语言实现

  • Mysql decimal(m,d)的说明

    Mysql decimal(m,d)的说明看了一些博客,觉得很多都是复制的,不如自己亲测一篇:createtabledecimal_test(idintauto_incrementPRIMARYkey,scoredecimal(5,2)–取值范围是-999.99到999.99);–整数的位数必须小于等于m-d,不然报错。小数的位数可以大于d位。多…

发表回复

您的电子邮箱地址不会被公开。

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