在前面的 HBase 篇和 ZooKeeper 篇都有稍微提到了一点 CAP 相关的内容,这是分布式系统设计绕不开的一个话题,CAP 理论告诉我们一个真理,“没有最完美的系统,只有最合适的”,我们没法做到面面俱到,但是我们可以根据需求去选择我们需要的特性。大数据的面试这些分布式原理和理论相关的内容是少不了的,这块内容一般会出现在架构设计的场景问题中。
本篇面试内容划重点:一致性问题。
什么是 CAP?
说 CAP 之前必须要明白的一个问题是,什么是分布式系统?随着技术和社会的发展,互联网服务的用户量和数据量爆发式增长,性能有限和稳定性差的单节点服务逐渐无法满足公司的需求,既然一台服务器不行,那就多台服务器一起提供服务,让多台服务器分担单节点的压力,这就是分布式。分布式系统看起来很美好,能解决扩展性、稳定性、高可用、高性能、高并发等问题,但是其实让多台服务器协同工作并不是那么简单的一件事情,看似美好的同时我们还有很多的问题要解决。比如 CAP 的取舍问题。
在理论计算机科学中,CAP 定理又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,最多只能满足“一致性(Consistency)”、“可用性(Availability)”