侧边栏壁纸
  • 累计撰写 98 篇文章
  • 累计创建 20 个标签
  • 累计收到 3 条评论

分布式理论学习

林贤钦
2021-03-15 / 0 评论 / 0 点赞 / 335 阅读 / 1,827 字
温馨提示:
本文最后更新于 2022-04-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

分布式理论学习

分布式系统简介和学习路线

什么是分布式系统

分布式系统是由一组通过网络通信,为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价、普通的机器完成单个机器无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。

为什么需要分布式系统

单个节点的处理能力优先,在如今的网络环境中,单个节点的服务器,不能抗下那么多的请求,当个节点的处理能力已经无法满足日益增长的计算、存储任务的时候,而硬件的升级伴随着昂贵的费用,而且优化的效果有限,这时候我们需要考虑到分布式系统。

思考:从单节点机器,到分布式的多节点机器,分布式是如何将任务分发的,分布式有什么好处,带来了什么问题

分布式是如何分发任务的

很简单,分治的思想,也就是分片(partition),将任务拆分。对于计算,那么就是对计算任务进行切换,每个节点算一些,最终汇总就行了,这就是MapReduce的思想;对于存储,更好理解一下,每个节点存一部分数据就行了。

分布式系统带来了什么好处

(1)提升性能和并发,操作被分发到不同的分片,相互独立

(2)提升系统的可用性,即使部分分片不能用,其他分片不会受到影响

分布式系统带来的问题

分布式系统有大量的节点,且通过网络通信。在网络通信中,可能会出现断网、高延迟的情况,在可能出现异常的情况下,分布式系统还需要对外提供稳定的服务,就需要较强的容错性。

​ 异构的机器与网络:分布式系统中的机器,配置不一样,其上运行的服务也可能由不同的语言、架构实现,因此处理能力也不一样;节点间通过网络连接,而不同网络运营商提供的网络的带宽、延时、丢包率又不一样。怎么保证大家齐头并进,共同完成目标,这是个不小的挑战。

​ 普遍节点的故障:虽然单个节点的故障概率较低,但节点数目达到一定规模,出故障的概率就变高了。分布式系统需要保证故障发生的时候,系统仍然是可用的,这就需要监控节点的状态,在节点故障的情况下将该节点负责的计算、存储任务转移到其他节点

​ 不可靠的网络:节点间通过网络通信,而网络是不可靠的。可能的网络问题包括:网络分割、延时、丢包、乱序。相比单机过程调用,网络通信最让人头疼的是超时:节点A向节点B发出请求,在约定的时间内没有收到节点B的响应,那么B是否处理了请求,这个是不确定的,这个不确定会带来诸多问题,最简单的,是否要重试请求,节点B会不会多次处理同一个请求。

分布式系统特性与衡量标准

​ 透明性:使用分布式系统的用户并不关心系统是怎么实现的,也不关心读到的数据来自哪个节点,对用户而言,分布式系统的最高境界是用户根本感知不到这是一个分布式系统,在《[Distributed Systems Principles and Paradigms](http://barbie.uta.edu/~jli/Resources/MapReduce&Hadoop/Distributed Systems Principles and Paradigms.pdf)》一书中,作者是这么说的:

A distributed system is a collection of independent computers that appears to its users as a single coherent system.  

​ 可扩展性:分布式系统的根本目标就是为了处理单个计算机无法处理的任务,当任务增加的时候,分布式系统的处理能力需要随之增加。简单来说,要比较方便的通过增加机器来应对数据量的增长,同时,当任务规模缩减的时候,可以撤掉一些多余的机器,达到动态伸缩的效果

​ 可用性与可靠性:一般来说,分布式系统是需要长时间甚至7*24小时提供服务的。可用性是指系统在各种情况对外提供服务的能力,简单来说,可以通过不可用时间与正常服务时间的必知来衡量;而可靠性而是指计算结果正确、存储的数据不丢失。

​ 高性能:不管是单机还是分布式系统,大家都非常关注性能。不同的系统对性能的衡量指标是不同的,最常见的:高并发,单位时间内处理的任务越多越好;低延迟:每个任务的平均时间越少越好。这个其实跟操作系统CPU的调度策略很像

​ 一致性:分布式系统为了提高可用性可靠性,一般会引入冗余(复制集)。那么如何保证这些节点上的状态一致,这就是分布式系统不得不面对的一致性问题。一致性有很多等级,一致性越强,对用户越友好,但会制约系统的可用性;一致性等级越低,用户就需要兼容数据不一致的情况,但系统的可用性、并发性很高很多。

0

评论区