分布式系统中CAP原理[通俗易懂]

分布式系统中CAP原理[通俗易懂]分布式系统CAP原理分布式系统发开虽然有点很多但是并不是完美的,CAP原理就是其中的体现之一。CAP原理:指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitontolerance(分区容忍性),三者不可得兼。一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。简单说就是所有节点在同一时刻的数据完全一致,这就意味着节点越…

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

分布式系统CAP原理

分布式系统发开虽然有点很多但是并不是完美的,CAP原理就是其中的体现之一。
CAP原理:指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partitontolerance(分区容忍性),三者不可得兼。

一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。简单说就是所有节点在同一时刻的数据完全一致,这就意味着节点越多数据同步的时候约消耗时间。
比如说分布式数据存储,多台设备需要存储同样的数据,这样一来一旦数据更变那么其他数据库肯定要同步数据,这就意味着我设备越多,我同步的速率也就会越慢,消耗的时长就越多。

可用性(A):负载过大后,集群整体是够还能响应用户正常的读写请求。简单说就是项目不管怎么滴,我系统对于用户请求的响应时间肯定在能接受的范围内的,用户体验不能没有啊。

分区容忍性(P):分区容忍性,就是高可用性,一个节点崩了不会影响其他节点。简单说就是我服务器节点崩了几个没事,只要我有正常的服务器就行了,这样就是说我节点越多就越好了。

CAP不得兼得原理

CAP理论就是说在一个分布式系统中,最多只能实现上面的两点。那我们来分析下。
第一:
拥有AP的时候为什么C不能实现?
在这里插入图片描述
根据上图我们来分析,比如我现在拥有10000个节点,现在要做数据备份,要将10000台设备(p满足了)上都备份上同样的数据,保持数据的一致性(C),我们想象10000台设备数据的同步必然是需要消耗时间,那么我们就没办法实现A,所以要想实现AP那,就不可能保证数据的一致性的。
第二
拥有CP不能为什么不能实现A?
也很好理解,10000台设备,我要保持数据一致性,我就没法保证请求相应时间很短了是吧。
第三
拥有CA为什么不能实现P?
同样的我想要保证数据的一致性,也就是数据的复制,又要保证在合理的请求相应时间内,那么我机器设备不可能很多了,这样就不能满足P了。

依据现在的网络硬件肯定会出现延迟对包的情况,设置个别服务器崩溃,起码得保证系统正常的运行,所以**分区容忍性(P)**是不能缺少的。

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

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

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


相关推荐

  • C++11特性_object.equals

    C++11特性_object.equalsdecltype与auto关键字一样,用于进行编译时类型推导。decltype实际上有点像auto的反函数,auto可以让你声明一个变量,而decltype则可以从一个变量或表达式中得到类型,例如:intx=3;decltype(x)y=x;有人会问,decltype的实用之处在哪里呢,假如有一个加工产品的函数模板:templatevoidproc

    2022年9月9日
    3
  • 1602驱动电路_lcd1602的a和k接哪里

    1602驱动电路_lcd1602的a和k接哪里       今天我也开博了,一个前辈的话对我触动很大:不会分享,不懂总结,就不要做技术。这也是我这博客的目的,望各路过高手菜鸟多多指教。          搞了几天的1062a终于调通了。前段时间把8位总线的调通了,这个简单,网上资料也多。以前写程序一般都是网上找资料后自已再改,这次1062a四位驱动的程序网上也有,我下了好多版本结果都不行,就这样我也堵在这几天了。这说明我的底层程序

    2022年9月22日
    2
  • OPENGL 教程网站

    1.http://nehe.gamedev.net/这个是我觉得全世界最知名的OpenGL教程,而且有网友将其中48个教程翻译成了中文http://www.owlei.com/DancingWind/。Nehe教程最大的特点是提供了针对不同平台、不同编译器、不同语言的各种版本。你

    2022年4月8日
    54
  • mysql远程连接数据库 权限_sql远程连接数据库失败

    mysql远程连接数据库 权限_sql远程连接数据库失败我们在刚学习MySQL数据库时一般都是连接localhost然后登录root用户创建数据库进行操作,那么问题来了,如何通过其他主机来访问自己的数据库呢?一、我们要保证两台主机在同一个局域网,也就是说你使用ping命令能够ping通另一台主机,这样才可以实现远程访问你的数据库 图中192.168.116.96为对方主机的ip地址,我的IP地址为192.168.116.92,因为我们在同一…

    2022年10月13日
    2
  • plsql直接连接远程数据库_mysql切换数据库命令

    plsql直接连接远程数据库_mysql切换数据库命令前言每次安装Oracle以后,都会出现使用plsql连接不上的问题!多次重启电脑、重装系统的磨人经历之后,终于做出这么一篇文章,希望能帮助广大技术人员减少一些时间,顺利进行连接。注:也可以用plsql连接远程数据库(只要有oracle的network\admin\tnsnames.ora就行)。首先下载64位oracle以及32位轻量级客户端(注意版本的对应,我用的是11g的oracl……

    2022年8月29日
    4
  • Centos 7安装nginx并配置https[通俗易懂]

    Centos 7安装nginx并配置https[通俗易懂]1.更新yum源yumupdate2.安装nginx的依赖环境yuminstall-ygcc-c++pcrepcre-develzlibzlib-developensslopenssl-develgcc-c++:安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境。pcrepcre-devel:PCRE(PerlCompatible…

    2022年5月26日
    43

发表回复

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

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