【Java高级工程师蜕变之路】050 分布式架构理论
本文分析了分布式架构应用广泛的理论。
分布式架构理论
2022/04/6 校对完成
文章更新历史
2022/04/02 初稿。
分布式架构介绍
什么是分布式系统
分布式系统是一个硬件或者软件分布在不同的网络计算机上,彼此之间仅仅通过消息传递通信和协调的系统。
通俗的理解,分布式系统是,一个业务分拆成多个子业务,分布在不同的服务器节点,共同构成的服务器系统成为分布式系统。
同一个分布式系统中的服务器节点在空间部署上是可以随意分布的,服务器可能放在不同分机柜中,也可能放在不同不同的机房中,深圳分布在不同的城市。
分布式与集群的区别
集群:多个服务器做同一件事情
分布式:多个服务器做不同的事情
分布式系统的特性
1、分布性
空间中可以随机分布。这些计算机可以分布在不同机房,不同城市,甚至是不同国家。
2、对等性
分布式系统中的计算机没有主/从之分,组成分布式的所有节点都是对等的。
3、并发性
同一个分布式系统中的多个节点,可能会并发的操作一些共享的资源,例如数据库或者分布式存储。
4、缺乏全局时钟
由于各个计算机依赖交换信息进行通信,很难定义两件事件的先后顺序,缺乏全局时钟控制序列。
5、故障总会发生
组成分布式系统分计算机,都有可能在某一时间崩掉。分的计算机越多,崩的几率越大。如果考虑设计程序时的故障,则故障的概率会大大的增加。
6、处理单点故障
单点SPoF(Single Point of Failure):某个角色或者功能只有某一台计算机在支撑,在这台计算机出现的故障叫做单点故障。
分布式系统面临的问题
-
通信异常
网络本身不可靠,因此每次通信都会面临网络不可用的风险(光纤、路由器、DNS等硬件系统的不可用),都会导致分布上系统无法顺利进行一次网络通信。即使分布式各个节点直接的网络能够进行通信,延迟也会大于单机操作,存在巨大的时延,这样会影响消息的收发,消息丢失和消息延迟变的很普遍。
-
网络分区
网络中出现了网络不连接,但是各个系统之间的子网链接正常,从而导致网络环境被切割成若干个孤立的区域,分布式系统会出现局部小集群。极端情况下,小集群会完成原本需要整个分布式系统才能完成的任务。包括事务的处理,这对分布式的一致性带来了很大的挑战。
- 节点故障
指的是分布式系统中节点出现宕机,每个节点又有可能出现故障或者僵死,并且经常发生。
-
三态
分布式系统中每一次请求都存在三态,即:成功、失败和超时。
-
重发
分布式系统在调用是可能会发生
失败
和超时
,这时需要重新发起调用。
-
幂等
一次或者多次请求同一个资源本身应该有相同的结果(网络超时等问题除外)。即任意多次执行对资源本身产生的影响均与第一次执行的影响相同。