传统的ACID为原子性(Atomicity),一致性(Consistency),独立性(Isolation),持久性(Durability)
CAP:强一致性(Consistency),可用性(Availability),分区容错性(Partition tolerance)
由于当前网络硬件肯定会出现延迟丢包的问题,所以其中分区容忍性是必须要实现的
CAP原理3进二:
CA:单点集群,满足一致性,可用性系统,通常在可扩展行上不太强大(传统的Oracle数据库)
CP:满足一致性,分区容忍性的系统,通常性能不是特别高(redis,Mongodb,保证数据的一致性)
AP:满足可用性,分区容忍性的系统,通常可能对一致性要求低一些(大多数网赚架构的原则)
一致性与可用性的原则:
数据库一致性要求:
很多web实时系统并不要求严格的数据库事务,对读一致性要求很低,有些场合对写一致性要求不高,允许最终一致性
数据库的写实时性和读实时性要求:
对关系型数据库来说,插入一条之后,要求立刻能够读出来,但是对许多Web应用凯硕,并不要求这么高的实时性,比如说发一条消息后,过几秒甚至几十秒之后,订阅者才看到也是可以接受的
BASE就是为了解决关系型数据库强一致性引起的可用性降低问题提出的解决方案
BASE是下面三个术语的缩写
基本可用(Basically Available)
软状态(Soft state)
最终一致(Eventually consistent)
他的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上的改观,原因是大型系统往往由于地域分布和极高性能的要求不可能采用分布式事务来完成这些指标,想要获得这些指标,就必须采用其他方法,这里Base就是解决这个问题的方法。
分布式:不同的多台服务器上部署不同的服务器模块,他们之间通过Rpc/Rmi之间通讯和调用,对外提供服务和组内协作
集群:不同的多台服务器部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问