随着业务的拓展,功能越来越多。把所有的功能都放在同一个服务下,代码混合交错,造成维护困难,也容易造成某一小bug导致整个服务不可用。因此我们会按业务功能会拆分成多个不同的服务(微服务的形成),多个服务组成的系统,有个响亮的名字:分布式系统;而系统中的服务状态我们该怎么去管理,有什么相关的理论呢?
❝当发生网络分区的时候,如果我们要继续服务,那么强一致性和可用性只能 2 选 1。也就是说当网络分区之后 P 是前提,决定了 P 之后才有 C 和 A 的选择。也就是说分区容错性(Partition tolerance)我们是必须要实现的 ❞
若系统出现“分区”,系统中的某个节点在进行写操作。为了保证一致性C, 必须要禁止其他节点的读写操作,这就和 A 发生冲突了;如果为了保证A,其他节点的读写操作正常的话,那就无法保证数据一致性,和C冲突
基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性;那什么又是允许损失部分可用性呢?
[1]
分布式与集群的区别是什么?: https://www.zhihu.com/question/20004877
[2]
数据一致性问题: https://blog.csdn.net/qq_30420359/article/details/82744767