zoukankan      html  css  js  c++  java
  • cap理论? cp ap原则的含义

    CAP的定义

    一、C全称Consistency(一致性) 这个表示所有节点返回的数据是一致的。

    二、A全称Availability(可用性)说白了就是某个节点坏了,不能影响其他的节点业务。

    三、P全称Partition tolerance(分区容错性)当系统中有节点因网络原因无法通信时,系统依然可以继续运行。

    可用性和容错性的区别

    可用性是针对非故障节点,如主mysql节点挂了,但从mysql没有挂,而且从mysql照样提供服务,就说明此分布式系统具有可用性。

    分区容错性是各个节点出现网络问题时,系统依然可用。如主Mysql和从Mysql 之间没法通信时,系统可用。

    总结:可用性针对节点出现故障,系统可用;分区容错性针对网络出现问题,系统可用

    CAP定理

    我们了解了CAP中的三个定义,CAP定理是表示分布式系统只能满足三项中的两项,而不可能满足全部三项。即分布式系统只能满足三种情况:CA、AP、CP。

    我们来分析一下,我们先看P,也就是分区容错性;在分布式系统中,网络异常是不可避免的,所以如果不保证分区容错性,除非节点间网络不会发生异常,这个是不可能的(除非单机系统,单机系统就不是分布式系统)。

    分布式系统肯定要实现P,那其实CA是理论上面的,其实不存在。

    在我们架构师开发分布式系统时,是需要根据业务进行权衡的。在我们大型互联网公司,因为机器数量庞大,网络故障是常态,一般选择AP原则,牺牲掉数据一致性。(一些金融产品对数据一致性要求很高的,就会选择CP)。

    我们看看常用的分布式系统的权衡:

    1、Redis中间件 ----> AP

    2、RocketMQ中间件 -----> AP

    3、分布式事务-2pc ----> CP
    4、分布式事务-最大努力尝试 —> AP

    5、Eureka —> AP

    Nacos CP/AP模式切换及微服务临时/永久实例配置

    Nacos 集群默认支持的是CAP原则中的AP原则,但是也可切换为CP原则,切换命令如下:

    curl -X PUT '$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'
    

    同时微服务的bootstrap.properties 需配置如下选项指明注册为临时/永久实例
    AP模式不支持数据一致性,所以只支持服务注册的临时实例,CP模式支持服务注册的永久实例,满足配置文件的一致性

    #false为永久实例,true表示临时实例开启,注册为临时实例
    spring.cloud.nacos.discovery.ephemeral=false
    

      

  • 相关阅读:
    Flask&&人工智能AI -- 12
    Flask&&人工智能AI -- 11
    Flask&&人工智能AI -- 10
    Flask&&人工智能AI -- 9
    Flask&&人工智能AI -- 8
    Flask&&人工智能AI -- 8 HTML5+ 初识,HBuilder,夜神模拟器,Webview
    Flask&&人工智能AI -- 7 MongoDB
    Flask&&人工智能AI -- 6 人工智能初识,百度AI,图灵机器人
    Flask&&人工智能AI --5 Flask-session、WTForms、数据库连接池、Websocket
    [转]八款开源Android游戏引擎
  • 原文地址:https://www.cnblogs.com/h-z-y/p/14577140.html
Copyright © 2011-2022 走看看