杭州市萧山区建设局网站,长治网站制作怎么做,食品购物网站建设,个人域名备过案了做电影网站会查吗分布式系统与一致性协议 CAP原理APCPCA总结BASE理论 一致性拜占庭将军问题 分布式系统是一个硬件或软件组件分布在不同的网络计算机上#xff0c;彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的设计目标一般包含如下#xff1a;
可用性#xff1a;可用性是分… 分布式系统与一致性协议 CAP原理APCPCA总结BASE理论 一致性拜占庭将军问题 分布式系统是一个硬件或软件组件分布在不同的网络计算机上彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的设计目标一般包含如下
可用性可用性是分布式系统的核心需求可扩展性增加机器后不会改变或减少改变系统行为并且能获得近似线性性能提升容错性系统发生错误时具有对错误进行规避以及从错误中恢复的能力性能对外服务的响应延时和吞吐率要能满足用户的需求
虽然分布式架构可以组建一个强大的集群但实际工作中遇到的挑战要比传统单体架构大得多具体表现如下
节点之间的网络通信是不可靠的存在网络延时和丢包等情况存在节点工作出错的情况节点自身随时也有宕机的可能同步调用使系统变得不具备扩展性
CAP原理
CConsistency一致性。强一致就是所有节点上的数据时刻保持同步。原子读写即所有读写都应该看起来是原子的或串行的。所有的读写请求好像是经过全局排序一样写后面的毒一定能读到前面所写的内容。 AAvailability可用性。任何非故障节点都应该在有限时间内给出请求的响应不论请求是否成功。 PTolerance to the partition of network分区容忍性。当部分节点之间无法通信时在丢失任意多消息的情况下系统仍然能够正常工作。 在任何分布式系统中可用性一致性和分区容忍性是相互矛盾的三者不可兼得最多只能取其二。CAP理论只适用于原子读写场景不支持数据库事务之类的场景。 P案例G0与G1无法进行通信是可以容忍的。如果出现了分区问题我们的分布式存储系统还需要继续运行 C案例对系统G0写操作b如果能读到b则为一致性如果读G1为a则不符合一致性所以此时G0需要向G1发送消息。当然数据系统故障了不返回任何数据也是符合一致性的 A案例只要收到用户的请求服务器就必须给出回应。即使两个分布式节点数据不一致需要返回数据 AP
AP满足但C不满足如果要高可用和分区容错那么就要放弃一致性了。因为一旦发生网络分区P节点之间将无法通信为了满足高可用A每个节点只能用本地数据提供服务这样就会导致数据的不一致性C。经典案例Eureka
CP
CP满足但A不满足如果要求各个服务器上数据是强一致的C然而网络分区P会导致同步时间无限延长那么如果以来可用性就得不到保障了。经典案例Zookeeper 坚持数据ACID原子性一致性隔离性持久性的传统数据库以及对结果一致性非常敏感的应用例如金融业务通常会做这样的选择
CA
CA满足但是P不满足如果不存在网络分区那么强一致性和可用性是可以同时满足的。
总结
但是在分布式系统内实际上P是必然的如果不选P一旦发生分区错误整个分布式系统完全无法使用了这是不符合需要的所以对于分布式系统我们只能考虑当分区发生错误时如果选择一致性和可用性。所以最后只有CP和AP系统了。
BASE理论
BASEBasic AvailabilitySoft stateEventually Consistency。是由CAP理论衍生出来的即使无法做到强一致性Strong Consistency但应用可以采用适合的方式达到最终一致性Eventual Consitency。
一致性
拜占庭将军问题
描述拜占庭帝国(Byzantine Empire)军队的几个师驻扎在敌城外每个师都由各自的将军指挥。将军们只能通过信使相互沟通。在观察敌情之后他们必须制定一个共同的行动计划如进攻(Attack)或者撤退(Retreat)且只有当半数以上的将军共同发起进攻时才能取得胜利。然而, 其中一些将军可能是叛徒试图阻止忠诚的将军达成一致的行动计划。 更糟糕的是负责消息传递的信使也可能是叛徒他们可能篡改或伪造消息也可能使得消息丢失