没有合适的资源?快使用搜索试试~ 我知道了~
分布式面试必会(2020最新版).pdf
需积分: 2 0 下载量 189 浏览量
2021-11-26
00:00:33
上传
评论
收藏 1.09MB PDF 举报
温馨提示
试读
31页
2020最新整理一线大厂面试题合集 - 分布式面试
资源推荐
资源详情
资源评论
1概念
1.1模型
节点
在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认
为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分
构成,则在模型中可以将一个进程划分为多个节点。
异常
1.机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概
率为千分之一左右,在实践中,一台宕机的机器恢复的时间通常认为是24小
时,一般需要人工介入重启机器。
2.网络异常:消息丢失,两片节点之间彼此完全无法通信,即出现了“网络分
化”;消息乱序,有一定的概率不是按照发送时的顺序依次到达目的节点,考
虑使用序列号等机制处理网络消息的乱序问题,使得无效的、过期的网络消息
不影响系统的正确性;数据错误;不可靠的TCP,TCP协议为应用层提供了可
靠的、面向连接的传输服务,但在分布式系统的协议设计中不能认为所有网络
通信都基于TCP协议则通信就是可靠的。TCP协议只能保证同一个TCP链接内
的网络消息不乱序,TCP链接之间的网络消息顺序则无法保证。
3.分布式三态:如果某个节点向另一个节点发起RPC(Remoteprocedurecall)
调用,即某个节点A向另一个节点B发送一个消息,节点B根据收到的消息内
容完成某些操作,并将操作的结果通过另一个消息返回给节点A,那么这个RPC
执行的结果有三种状态:“成功”、“失败”、“超时(未知)”,称之为分
布式系统的三态。
4.存储数据丢失:对于有状态节点来说,数据丢失意味着状态丢失,通常只能从
其他节点读取、恢复存储的状态。
5.
异常
处
理
原
则
:被大量工程实践所检验过的异常处理黄金原则是:任何在设
计阶段考虑到的异常情况一定会在系统实际运行中发生,但在系统实际运行遇
到的异常却很有可能在设计时未能考虑,所以,除非需求指标允许,在系统设
计时不能放过任何异常情况。
1.2副本
副本(replica/copy)指在分布式系统中为数据或服务提供的冗余。对于数据副本指
在不同的节点上持久化同一份数据,当出现某一个节点的存储的数据丢失时,可以从
副本上读到数据。数据副本是分布式系统解决数据丢失异常的唯一手段。另一类副本
是服务副本,指数个节点提供某种相同的服务,这种服务一般并不依赖于节点的本地
存储,其所需数据一般来自其他节点。
副本协议是贯穿整个分布式系统的理论核心。
副本一致性
分布式系统通过副本控制协议,使得从系统外部读取系统内部各个副本的数据在一定
的约束条件下相同,称之为副本一致性(consistency)。副本一致性是针对分布式系统
而言的,不是针对某一个副本而言。
1.强一致性(strongconsistency):任何时刻任何用户或节点都可以读到最近
一次成功更新的副本数据。强一致性是程度最高的一致性要求,也是实践中最
难以实现的一致性。
2.单调一致性(monotonicconsistency):任何时刻,任何用户一旦读到某个
数据在某次更新后的值,这个用户不会再读到比这个值更旧的值。单调一致性
是弱于强一致性却非常实用的一种一致性级别。因为通常来说,用户只关心从
己方视角观察到的一致性,而不会关注其他用户的一致性情况。
3.会话一致性(sessionconsistency):任何用户在某一次会话内一旦读到某
个数据在某次更新后的值,这个用户在这次会话过程中不会再读到比这个值更
旧的值。会话一致性通过引入会话的概念,在单调一致性的基础上进一步放松
约束,会话一致性只保证单个用户单次会话内数据的单调修改,对于不同用户
间的一致性和同一用户不同会话间的一致性没有保障。实践中有许多机制正好
对应会话的概念,例如php中的session概念。
4.最终一致性(eventualconsistency):最终一致性要求一旦更新成功,各个
副本上的数据最终将达到完全一致的状态,但达到完全一致状态所需要的时间
不能保障。对于最终一致性系统而言,一个用户只要始终读取某一个副本的数
据,则可以实现类似单调一致性的效果,但一旦用户更换读取的副本,则无法
保障任何一致性。
5.弱一致性(weekconsistency):一旦某个更新成功,用户无法在一个确定
时间内读到这次更新的值,且即使在某个副本上读到了新的值,也不能保证在
其他副本上可以读到新的值。弱一致性系统一般很难在实际中使用,使用弱一
致性系统需要应用方做更多的工作从而使得系统可用。
1.3衡量分布式系统的指标
1.性能:系统的吞吐能力,指系统在某一时间可以处理的数据总量,通常可以
用系统每秒处理的总的数据量来衡量;系统的响应延迟,指系统完成某一功能
需要使用的时间;系统的并发能力,指系统可以同时完成某一功能的能力,通
常也用QPS(querypersecond)来衡量。上述三个性能指标往往会相互制约,
追求高吞吐的系统,往往很难做到低延迟;系统平均响应时间较长时,也很难
提高QPS。
2.可用性:系统的可用性(availability)指系统在面对各种异常时可以正确提供
服务的能力。系统的可用性可以用系统停服务的时间与正常服务的时间的比例
来衡量,也可以用某功能的失败次数与成功次数的比例来衡量。可用性是分布
式的重要指标,衡量了系统的鲁棒性,是系统容错能力的体现。
3.可扩展性:系统的可扩展性(scalability)指分布式系统通过扩展集群机器规模
提高系统性能(吞吐、延迟、并发)、存储容量、计算能力的特性。好的分布
式系统总在追求“线性扩展性”,也就是使得系统的某一指标可以随着集群中
的机器数量线性增长。
4.一致性:分布式系统为了提高可用性,总是不可避免的使用副本的机制,从
而引发副本一致性的问题。越是强的一致的性模型,对于用户使用来说使用起
来越简单。
2分布式系统原理
2.1数据分布方式
所谓分布式系统顾名思义就是利用多台计算机协同解决单台计算机所不能解决的计
算、存储等问题。单机系统与分布式系统的最大的区别在于问题的规模,即计算、存
储的数据量的区别。将一个单机问题使用分布式解决,首先要解决的就是如何将问题
拆解为可以使用多机分布式解决,使得分布式系统中的每台机器负责原问题的一个子
集。由于无论是计算还是存储,其问题输入对象都是数据,所以如何拆解分布式系统
的输入数据成为分布式系统的基本问题。
哈希方式
哈希分布数据的缺点同样明显,突出表现为可扩展性不高,一旦集群规模需要扩展,
则几乎所有的数据需要被迁移并重新分布。工程中,扩展哈希分布数据的系统时,往
往使得集群规模成倍扩展,按照数据重新计算哈希,这样原本一台机器上的数据只需
迁移一半到另一台对应的机器上即可完成扩展。
针对哈希方式扩展性差的问题,一种思路是不再简单的将哈希值与机器做除法取模映
射,而是将对应关系作为元数据由专门的元数据服务器管理.同时,哈希值取模个数往
往大于机器个数,这样同一台机器上需要负责多个哈希取模的余数。但需要以较复杂
的机制维护大量的元数据。哈希分布数据的另一个缺点是,一旦某数据特征值的数据
严重不均,容易出现“数据倾斜”(dataskew)问题。
哈希分布数据的另一个缺点是,一旦某数据特征值的数据严重不均,容易出现“数据
倾斜”(dataskew)问题
按数据范围分布
按数据范围分布是另一个常见的数据分布式,将数据按特征值的值域范围划分为不同
的区间,使得集群中每台(组)服务器处理不同区间的数据。
工程中,为了数据迁移等负载均衡操作的方便,往往利用动态划分区间的技术,使得
每个区间中服务的数据量尽量的一样多。当某个区间的数据量较大时,通过将区
间“分裂”的方式拆分为两个区间,使得每个数据区间中的数据量都尽量维持在一个
较为固定的阈值之下。
一般的,往往需要使用专门的服务器在内存中维护数据分布信息,称这种数据的分布
信息为一种元信息。甚至对于大规模的集群,由于元信息的规模非常庞大,单台计算
机无法独立维护,需要使用多台机器作为元信息服务器。
按数据量分布
数据量分布数据与具体的数据特征无关,而是将数据视为一个顺序增长的文件,并将
这个文件按照某一较为固定的大小划分为若干数据块(chunk),不同的数据块分布
剩余30页未读,继续阅读
资源评论
码上富贵
- 粉丝: 1w+
- 资源: 177
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功