1.分布式系统是什么
分布式系统:算法
- 一个硬件或软件组件分布在不一样的网络计算机上,彼此之间仅仅经过消息传递进行通讯和协调的系统,这是分布式系统,在不一样的硬件,不一样的软件,不一样的网络,不一样的计算机上,仅仅经过消息来进行通信与协调。
更细致的看这些特色又能够有:分布性、对等性、并发性、缺少全局时钟、 故障随时会发生。数据库
1.1分布性:
最显著的特色确定就是分布性,从简单来看,若是咱们作的是个电商项目,整个项目会分红不一样的功能,专业点就不一样的微服务,好比用户微服务,产品微服务,订单微服务,这些服务部署在不一样的tomcat中,不一样的服务器中,甚至不一样的集群中,整个架构都是分布在不一样的地方的,在空间上是随意的,并且随时会增长,删除服务器节点,这是第一个特性。缓存
1.2对等性:
对等性是分布式设计的一个目标。分布式系统拆分了好多个服务,每一个服务均可能出问题而致使整个系统出问题,所以每一个服务通常都有备份,在服务异常时备份服务能顶替原来异常的服务.
关键:这就要求2个服务是彻底对等的,功能彻底一致.好比订单服务,客户服务等,其实就是服务副本的冗余.
还有一种是数据冗余,如数据库,缓存和分布式服务同样须要有备份存在,这就是对等性.tomcat
1.3并发性:
在分布式系统里面的并发就不是咱们基础学习的多线程(单JVM)了,而是更高层,从多进程多JVM角度,好比多个分布式服务可能并发操做一些共享资源,如何准确并高效的协调分布式并发操做.服务器
1.4缺少全局时钟:
在分布式系统中,节点是可能反正任意位置的,而每一个位置,每一个节点都有本身的时间系统,所以在分布式系统中,很难定义两个事务纠结谁先谁后,缘由就是由于缺少一个全局的时钟序列进行控制,固然,如今这已经不是什么大问题了,已经有大把的时间服务器给系统调用。网络
1.5故障随时发生
任何一个节点均可能出现停电,死机等现象,服务器集群越多,出现故障的可能性就越大,随着集群数目的增长,出现故障甚至都会成为一种常态,怎么样保证在系统出现故障,而系统仍是正常的访问者是做为系统架构师应该考虑的。多线程
2.分布式系统协调“方法论”
2.1 分布式系统带来的问题:架构
- 通讯异常:通信异常其实就是网络异常,网络系统自己是不可靠的,因为分布式系统须要经过网络进行数据传输,网络光纤,路由器等硬件不免出现问题。只要网络出现问题,也就会影响消息的发送与接受过程,所以数据消息的丢失或者延长就会变得很是广泛。
- 网络分区:网络分区,其实就是脑裂现象。好比有个管理者与一些服务通讯并协调服务,出于一些异常状况通讯断了,出现了一个临时管理者,实际上原来的管理者还在,这样2个管理者作同一个工做会出现问题
- 三态:三态其实就是成功,与失败之外的第三种状态,叫超时态。
在一个jvm中,应用程序调用一个方法函数后会获得一个明确的相应,要么成功,要么失败,而在分布式系统中,虽然绝大多数状况下可以接受到成功或者失败的相应,但一旦网络出现异常,就很是有可能出现超时,当出现这样的超时现象,网络通信的发起方,是没法肯定请求是否成功处理的。
- 节点故障: 节点故障在分布式系统下是比较常见的问题,指的是组成服务器集群的节点会出现的宕机或“僵死”的现象,这种现象常常会发生
.并发
2.2 CAP理论负载均衡
CAP其实就是一致性,可用性,分区容错性这三个词的缩写。
- C 一致性:数据在分布式环境下的多个副本之间可否保持一致性,这里的一致性更可能是指强一致性;这里说的一致性和前面说的对等性其实差很少。若是可以在分布式系统中针对某一个数据项的变动成功执行后,全部用户均可以立刻读取到最新的值,那么这样的系统就被认为具备【强一致性】。
- A 可用性:分布式系统一直处于可用状态,对于请求老是能在有限的时间内返回结果致性;这里的重点是【有限的时间】和【返回结果】,为了作到有限时间用到了缓存,负载均衡,为了返回结果考虑服务器主备.
- P 分区容错性:除非整个网络故障,分布式系统在任何网络或者单点故障时,仍能对外提供知足一致性和可用性的服务;
CAP具体描述:

2.3. BASE理论
即便没法作到强一致性,但分布式系统能够根据本身的业务特色,采用适当的方式来使系统达到最终的一致性;
- BasicallyAvaliable基本可用:当分布式系统出现不可预见的故障时,容许损失部分可用性,保障系统的“基本可用”;体如今“时间上的损失”和“功能上的损失”;e.g:部分用户双十一高峰期淘宝页面卡顿或降级处理;
- Soft state软状态:容许系统中的数据存在中间状态,既系统的不一样节点的数据副本之间的数据同步过程存在延时,并认为这种延时不会影响系统可用性;e.g:12306网站卖火车票,请求会进入排队队列;
- Eventually consistent最终一致性:全部的数据在通过一段时间的数据同步后,最终可以达到一个一致的状态;e.g:理财产品首页充值总金额短时不一致;
分布式一致性算法:
常见分布式一致性算法:2p,3p,paxos,zab算法;
