For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而今天我们就通过案例分析来了解一下,软件开发分布式系统常见问题都有哪些。
故障与部分失效
单个计算机上的软件,通常会以⼀种相当可预测的⽅式运⾏,它没有根本性的不可靠原因。
在分布式系统中,情况有本质上的区别。在分布式系统中,尽管系统的其他部分⼯作正常,但系统的某些部分可能会以某种不可预知的⽅式被破
坏。这被称为部分失效(partial failure)。
难点在于部分失效是不确定性的
(nonderterministic):如果你试图做任何涉及多个节点和⽹络的事情,它有时可能会⼯作,有时会出现不可预知的失败。
如果要使分布式系统⼯作,就必须接受部分故障的可能性,并在软件中建⽴容错机制。换句话说,我们需要从不可靠的组件构建⼀个可靠的系统。
故障处理必须是软件设计的⼀部分,并且作为软件的运维,您需要知道在发⽣故障的情况下,软件可能会表现出怎样的⾏为。
不可靠的网络
真实的网络环境很不稳定,⽹络故障时有发生,如果⽹络故障的错误处理没有定义与测试,武断地讲,各种错误可能都会发⽣。
您需要知道您的软件如何应对⽹络问题,并确保系统能够从中恢复。
有意识地触发⽹络问题并测试系统响应。
检测故障
如果你想确保⼀个请求是成功的,你需要应⽤程序本身的积极响应。
超时与⽆穷的延迟
如果超时是检测故障的唯⼀可靠⽅法,那么超时应该等待多久?不幸的是没有简单的答案。
⽹络拥塞和排队
⻓时间的超时意味着⻓时间等待,直到⼀个节点被宣告死亡。在这段时间内⽤户可能不得不等待或者看到错误信息。
短暂的超时可以更快地检测到故障,但是实际上它只是经历了暂时的减速⽽导致错误地宣布节点失效的⻛险更⾼。例如,由于节点或⽹络上的负载峰值。
更好的⼀种做法是,系统不是使⽤配置的常量超时,⽽是连续测量响应时间及其变化(抖动),并根据观察到的响应时间分布⾃动调整超时。
同步网络vs异步网络
电话电路
使用固定的网络带宽,传输的数据量固定、可预测。可保证的最⼤往返时间。
低请求时浪费带宽,超过可支持带宽的高请求时网络阻塞。
分组交换协议
根据网络中数据类型及大小的不同,传输的数据量也是不可预测的,是动态变化的。
有利于应对突发流量的情况。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。