大白话浅谈分布式问题

分布式环境的特点
分布性和并发性:
在程序运行过程中,并发性操作是很常见的。比如一个分布式系统中的多个节点,同时访问同一个资源。
无序性:
进程之间的消息通信,会出现消息不一致的问题。

分布式环境下面临的问题
1,网络通信:
所谓的分布式架构是基于网络通信来进行消息交互的,但是网络本身就是不可靠的(例如光纤被挖断了,网线被老鼠给咬断了,火灾等等。。不可抗力因素存在),这些会导致你的业务不可用,。

2,网络分区(脑裂):
就是网络发生异常导致整个分布式架构里面部分节点之间的网络延迟不断增大,最终会导致组成分布式的节点只有部分节点能够通信,另外一些节点则不能通信。
打个比方:一个正常的集群,原本有1个master和4个slave
这里写图片描述
如果这个时候因为网路问题导致部分机器不能通信了(比如是slave3和slave4这2台不能够通信),那么这个时候可能就会出现一种问题,就是slave3和slave4会重新选举一个master出来。就会出现下面的情形:
这里写图片描述
这个时候就等于出现了2个独立的集群,它们有一个很大的特点,它们本身是独立完整的,它们会继续完成之前的一个操作,这样就会导致一个很大问题,例如我们的数据重复。

3,三态:
在正常的单机环境下,一个程序调用一个接口,正常情况下只有2个状态,成功态和失败态。
但是在分布式环境下,就又多了一种状态,叫做超时态,指的就是在分布式网路通信时,因为网络故障,我的消息一直没有收到返回或者是我的消息没有发送出去。

猜你喜欢

转载自blog.csdn.net/shuxing520/article/details/79877745