内容简介:分布式系统:更细致的看这些特点又可以有:分布性、对等性、并发性、缺乏全局时钟、 故障随时会发生。1.1分布性:
1.分布式系统是什么
分布式系统:
- 一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统,这是分布式系统,在不同的硬件,不同的软件,不同的网络,不同的计算机上,仅仅通过消息来进行通讯与协调。
更细致的看这些特点又可以有:分布性、对等性、并发性、缺乏全局时钟、 故障随时会发生。
1.1分布性:
最显著的特点肯定就是分布性,从简单来看,如果我们做的是个电商项目,整个项目会分成不同的功能,专业点就不同的微服务,比如用户微服务,产品微服务,订单微服务,这些服务部署在不同的tomcat中,不同的服务器中,甚至不同的集群中,整个架构都是分布在不同的地方的,在空间上是随意的,而且随时会增加,删除服务器节点,这是第一个特性。
1.2对等性:
对等性是分布式设计的一个目标。分布式系统拆分了好多个服务,每个服务都可能出问题而导致整个系统出问题,因此每个服务一般都有备份,在服务异常时备份服务能顶替原来异常的服务.
关键:这就要求2个服务是完全对等的,功能完全一致.比如订单服务,客户服务等,其实就是服务副本的冗余.
还有一种是数据冗余,如数据库,缓存和分布式服务一样需要有备份存在,这就是对等性.
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算法;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Agile Web Application Development with Yii 1.1 and PHP5
Jeffrey Winesett / Packt Publishing / 2010-08-27
In order to understand the framework in the context of a real-world application, we need to build something that will more closely resemble the types of applications web developers actually have to bu......一起来看看 《Agile Web Application Development with Yii 1.1 and PHP5》 这本书的介绍吧!