1,CAP 理论

CAP 理论是对分布式集群系统的总结,所谓鱼和熊掌不可兼得:

  • Consistency一致性,此处特指强一致性,指在分布式系统中数据要在各台服务器间一致
  • Availability可用性,此处特指高可用性,指整个分布式系统对外服务的可用性
  • Partition tolerance分区容错性,在三个中分区容错性是必须要实现的,因为单机情况下所有的都满足不了,只能集群,也就是分区

关于分区容错性:
一个分布式系统里面,节点组成的网络本来应该是连通的。然而可能因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。数据就散布在了这些不连通的区域中。这就叫分区。
当你一个数据项只在一个节点中保存,那么分区出现后,和这个节点不连通的部分就访问不到这个数据了。这时分区就是无法容忍的。
提高分区容忍性的办法就是一个数据项复制到多个节点上,那么出现分区之后,这一数据项就可能分布到各个区里。容忍性就提高了。
然而,要把数据复制到多个节点,就会带来一致性的问题,就是多个节点上面的数据可能是不一致的。要保证一致,每次写操作就都要等待全部节点写成功,而这等待又会带来可用性的问题。
总的来说就是,数据存在的节点越多,分区容忍性越高,但要复制更新的数据就越多,一致性就越难保证。为了保证一致性,更新所有节点数据所需要的时间就越长,可用性就会降低。

1,CP

实现强一致性和分区容错性,要求每次写操作必须在每台服务器间进行同步达到数据一致,这样的话性能就会降低,对于银行等涉及金钱的业务来说必须选择这个,实现强一致性的手段:

  • 2PC二阶段提交

    2,AP

    实现高可用性和分区容错性,及每次写操作不必要或只在少数服务器间同步,将大大提高性能,但是数据一致性得不到保障,互联网系统多数基于AP,实现AP的手段有:

  • TCC分布式事务

  • 消息队列
  • Saga分布式事务

    2,BASE 理论

    BASE 理论是对 CAP 理论的补充,是无法满足 CAP 的一种妥协

  • Basically Available基本可用,强调分布式系统的所有节点都要有不错的可用性

  • Soft State软状态,允许数据可以有中间状态,比如两个服务之间的交流不必要是最新的数据,中间状态的数据也可以
  • Eventually Consistent最终一致性,既然采用了数据中间状态,那么必须要将数据更新到最终状态,满足最终数据一致性,比如使用消息队列,虽然实时性有所下降,但是最终一致性得到满足

CAP 及 BASE 理论 - 图1