• 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
    

      

  • 相关阅读:
    SQL code for the partitoned example
    去掉重复的列名.txt
    末公开的存储过程.txt
    LauncherClass
    Retina时代的前端视觉优化
    获得数据库中表字段的名字.txt
    StaticConstructor.cs
    UNION ALL实现的分级汇总示例.sql
    SignAndSeal
    在现有数据库上还原时的数据文件处理示例.sql
  • 原文地址:https://www.cnblogs.com/h-z-y/p/14577140.html
Copyright © 2020-2023  润新知