CAP理论
在分布式系统中最多只能够满足一致性(Consistency),可用性(Availbaility)和分区容错性这三者之中的其中两种
- 一致性(Consistency):在数据更新后,所有的节点数据同一时间完全同步。比如MySql的事物
- 可用性(Availbaility):服务一直可以用,且处于正常响应时间
- 分区容错性(Partition tolerance):分布式系统在某个节点故障的时候,任然可以保证对外提供可满足一致性和可用性的服务
如下图所示,用户在经过CDN网络分配的时候会根据用户的位置选择最近的服务器IP地址,所谓一致性就是为了保障A机房的数据可以在同一时间和B机房同步,而可用性可小大,小的就是我只有一个机房,但是里面会有多个同业务服务,挂了一个还有下面的顶上去,大到多个机房,一个机房挂了还有下个机房顶
CAP权衡
而常用的分为CP和AP两种系统模式
- CP适用场景如金融系统(与钱或者其他敏感的事物)
- AP则只要保证服务可以使用就行了
BASE理论
在CAP理论上的延伸,核心思想就是即使无法达到强一致性(CAP的一致性就是强一致性),但是可以使用适合的方法达到最终一致性
- 基本可用性(Bacsically Availble):就是舍车保帅,指的是在分布式系统遇到故障的时候可以舍弃一部分服务,保证其核心服务即可
- 软状态(Soft State):指的是允许系统之间存在中间状态,就是在两个或者多个服务之间可以不需要在同一时间数据同步(强一致性),可以存在个什么几秒的时间差存在。分布式存储中一般一份数据会有至少是哪个副本,允许不同节点之间副本同步的延时就是软状态的体现。
- 最终一致性(Eventual Consistency):系统中的所有数据副本经过一定时间后,最终达到的一致状态。弱一致性和强一致性相反,最终一致性则是弱一致性的一种特殊状态
异地多活
不过在这里有一个新的概念就是分布式ID。分布式ID解决了数据备份是ID冲突的问题。