vlambda博客
学习文章列表

什么是分布式?什么是CAP理论?

      技术小白看到这些词(集群/分布式/微服务/SOA)时,感觉遥不可及。但真正接触到的时候,发现原来如此啊,只不过当时被它的名字给唬住了。

        

什么是分布式

分布式系统是一组计算机,通过网络相互连接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。


好处:

模块之间独立,各做各的事,便于扩展,复用性高


什么是集群

计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。


集群技术特点:

通过多台计算机完成同一个工作,达到更高的效率。两机或多机内容、工作过程等完全一样。如果一台死机,另一台可以起作用。


什么是CAP 理论

如果你接触过一些分布式的基础概念,那肯定会听过 CAP 这个理论。


Consistency (一致性):


“all nodes see the same data at the same time”,即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,这就是分布式的一致性。一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。


Availability (可用性):


可用性指“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。好的可用性主要是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。


Partition Tolerance (分区容错性):


即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。


要了解CAP分布式理论,先要知道为什么会有数据分区。


由于我们的系统是分布式的,节点之间的通信是通过网络来进行的。只要是分布式系统,那很有可能会出现一种情况:因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。

数据就散布在了这些不连通的区域中,这就叫分区。


出现了网络分区后,有一个请求过来了,如想要注册一个账户。


1  如果允许当前用户注册一个账户,此时注册的记录数据只会在节点一和节点二或者节点二和节点三同步,因为节点一和节点三的记录不能同步的。就是保证了可用性,但牺牲了一致性。


2 如果不允许当前用户注册一个账户(就是要等到节点一和节点三恢复通信)。节点一和节点三一旦恢复通信,我们就可以保证节点拥有的数据是最新版本。就是保证了一致性,而牺牲了可用性。


3 如果要系统不会出现网络分区,那就只能在架构时不使用分布式。就是保证一致性和可用性,不使用分布式部署,没有了分区性。缺点是系统扩展性差。

所以,CAP理论一句话就是,"Consistency ","Availability ","Partition"三者不可兼得。重心放在任意两方,都需要第三方做出牺牲。


对于系统架构选择上来说,只有适合的才是最好的,好的系统应该是根据业务场景来进行架构设计的。