zoukankan      html  css  js  c++  java
  • 分布式数据缓冲的CAP原则

    首先需要了解一个概念:

    在分布式系统中需要处理大量的http请求,其中有大量的http请求(来自不同服务器)需要访问数据库,但是我们的主数据库承载不了如此之多的连接,所以衍生出了数据缓冲的概念,也就是在多个处理http连接的服务器上创建主数据库的副本(不一定是全部副本,可能是部分,也可能是全部,根据设计不同而不同,)

    接下来该说明一下CAP原则了(在处理服务器的数据库中)

    C:数据一致性(一次更改,在下一次访问该数据时,所有副本的数据都是更改之后的)

    A:可用性(该数据库可以立即处理对应的http请求,不需要等待数据一致性这个过程)

    P:分区容错性(有服务器宕机之后,不影响用户使用)

    CAP原则中只能同时支持其中的两种:

    CA的情况:那我们就不能拥有多个处理服务器了,因为,我们要实现可用性,当我们一个数据在服务器A被更改,它写到服务器B的数据库中是需要时间的。而与此同时,我们要访问服务器B的该数据,但是数据被更改了,我们要实现数据一致性就必须等待服务器B上的数据被改之后再读。所以在多个服务器上是没办法实现数据一致性和可用性的。只能在一个服务器上。

    CP:没办法保持可用性,因为可能需要等,但是可用性要求的时立马可以用

    AP:没办法保持一致性,因为一致性需要时间啊,可用性还没等人家改就给读了,当然没办法保持

    其实这个原则只有在数据进行一致性的过程中同时去一个还未更改过的服务器访问这个数据的时候,只是说明了在这种时候该如何抉择,当然是保持一致性啦,可用性还能把锅推给网络,一致性死活都会让用户觉得你代码写的烂。

  • 相关阅读:
    tp框架 php ajax 登陆
    js代码之编程习惯
    基于bootstrap的后台左侧导航菜单和点击二级菜单刷新二级页面时候菜单展开显示当前菜单
    用WebStorm进行Angularjs 2的开发
    关于datetimepicker只显示年、月、日的设置
    checkbox多选按钮变成单选
    mac navicate破解版汉化
    mac CodeIgniter和EasyWeChat 开发微信公众号
    python settings :RROR 1130: Host 'XXXXXX' is not allowed to connect to this MySQL server
    Eclipse中如何显示代码行
  • 原文地址:https://www.cnblogs.com/mcmx/p/11424442.html
Copyright © 2011-2022 走看看