• CAP原理


    微服务应用属于分布式系统的一种落地实践,而分布式系统的最大难题是处理各个节点之间数据状态的一致性,CAP原理就是描述分布式系统下节点数据同步的基本定理

    CAP定理分别指Consistency(一致性)Availability(可用性)Partion toterance(分区容忍性)这三种特性通常情况下不能同时满足。

    (1)数据一致性

    系统的数据信息(包括备份数据)在同一时刻都是一致的,在分布式系统中,同一份数据可能存在多个不同的实例中,在数据强一致性的要求下,对其中一份数据的修改,必须同步到它的所有备份中去,在数据同步的任何时候,都需要保证所有对该份数据的请求将返回同样的状态。

    (2)服务可用性

    服务在接收到客户端请求后,都能够给出响应。服务可用性考量的是系统的可用性,要求服务在高可用和部分节点宕机的情况下,系统整体依然能够响应客户端的请求。

    (3)分区容忍性

    在分布式系统中,不同节点之间通过网络进行通信,基于网络的不可靠性,位于不同网络分区的服务节点都可能会通讯失败,如果系统能够容忍这种情况,说明它是满足分区容忍性的,如果系统不能够满足分区容忍性,那将会限制分布式系统的扩展性,即服务节点的部署数量和地区将受限,违背了分布式系统的设计初衷,一般来讲分布式系统都会满足。

    解释下为什么不能同时满足三个条件?

    假设服务A现在有两个实例A1和A2,他们之间的网络通信出现异常,基于分区容忍性,并不会影响A1和A2独立的正常运行,若此时客户端请求A1,
    请求将数据B从B1状态修改为B2,由于网络的不可用,数据B的修改并不能通知到A2实例,
    如果此时另一个客户端向A2请求数据B,如果A2返回数据B1,将满足服务的可用性,但并不能满足数据一致性;
    如果A2需要A1的通知之后才能返回数据B的正确状态,虽然满足了数据一致性,但无法响应客户端二点请求,违背了服务可用性的指标。
    

    基于分布式系统的基本特质,分区容忍性是必须要满足的,接下来,需要考虑满足数据一致性还是服务可用性,这要取决于具体的应用场景,在类似银行对数据要求强的系统中,要优先考虑满足数据一致性;而类似大众网页的系统中,用户对网页版本的新旧不会有特别的要求,在这种情况下服务可用性高于数据一致性。

  • 相关阅读:
    c#操作ElasticSearch5详解
    消息推送服务
    Elasticsearch5.0.1 + Kibana5.0.1 + IK 5.0.1
    C#使用ES
    C# 开发人员的函数式编程
    Swagger文档转Word
    Spring Security OAuth2 Demo -- good
    is not eligible for getting processed by all BeanPostProcessors
    成功都一样,失败各不同;失败的项目也许值得你警醒
    java.exe进程来源排查录
  • 原文地址:https://www.cnblogs.com/lvpengbo/p/14530862.html
Copyright © 2020-2023  润新知