首先,分布式系统是在硬件成本日益提高,或者单机提升的成本过于昂贵而程序的问题得不到解决时,为了解决更加高效、内容量更大的数据而采取的一种解决手段。
而分布式系统又分为两个部分,计算和存储,而准确来说这两部分不能分开,而是相辅相成的。
为什么提到分布式系统,是因为这个概念的提出遇到了很多的挑战:
比如,如果系统中存在的单个电脑的配置存在差异,那么在性能方面,例如语言的使用和信息处理的效率还有能力上就会变得良莠不齐;在加上网络运营商的效率和容差,让不同位置不同的机器配合,同时高效的解决一整个高数据流的问题,成为分布式系统概念提出以来一个严肃的亟待解决的问题。
又比如,因为分布式系统是针对于计算机的某个节点的,如果按照节点划分,单个机子出现故障的概率很低,但是随着机子的数量增加,节点的数量增加,出现故障的概率也是成正比的增加。
如何降低这些故障发生的概率,并且实施有效的风险应对,在遇到故障时可以积极主动地调动其他完好的机子继续执行当下的任务不拖节奏成为了我们的解决方法,但是想法的提出需要有效的理论和技术去实现。
再比如,在节点和节点之间的衔接是借助网络作为媒介传播的,但是网络除了高效快捷的同时也带来了不稳定以及漏洞。常见的网络问题有:网络分割、延时、丢包、乱序。但是遗憾的是,除了网络目前我们没有别的手段实现节点和节点之间的传播。
如果借助网络,我们的分布式就会变得脆弱。比如常见的网络分割问题,注意这里的网络是指大、 中型的工业级别网络,如企业、金融机构、政府机构、大型教育园区网等类型项目的网络,有别于普通家用的小型网络,是需要庞大而复杂的网络来支持的,这类网络在实现实用价值的时候就会通过分割网络来解决单一网络、单一链路的缺陷,从而导致受体的计算机会出现没有网络的情况。
由此可见,网络分割是大型企业中不可或缺的维稳保障,然而这又给分布式系统带来不少风险和麻烦。
诸如此类的矛盾点存在于分布式系统的发展中,因此分布式系统的研发才走在最前沿,成为了java大佬的分水岭。搞明白这些不仅仅代表你的java学到了一定水平,更加可以确定的是你已经接触到了比较靠前的技术,并且在一个突破的窗口瞭望。
如果你可以解决这些问题,不可否认的除了个人的能力技术,更是具有里程碑式意义的存在。
最后放上外国大师总结的分布式新手容易犯下或者忽略的几点容易犯错假设:
The network is reliable.
Latency is zero.
Bandwidth is infinite.
The network is secure.
Topology doesn't change.
There is one administrator.
Transport cost is zero.
The network is homogeneous.
希望这篇文章可以帮到你了解一下分布式系统目前的处境。
欢迎点赞评论收藏~
你还想知道关于计算机的什么问题,欢迎评论区留言,我们下期见。